野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10768|回复: 3

GPS数据输出延时问题

[复制链接]
发表于 2015-12-18 13:25:36 | 显示全部楼层 |阅读模式


定义一个较大的buff,512个字节,一半接收一半解码,存在延时问题,在我实际测试中,发现延时数分钟之久,求教大家是怎么回事?如何修改?
将buff改小点,64个字节,发现同一语句输出多次 。gps放在车上,对实时性要求较高 。
回复

使用道具 举报

发表于 2015-12-18 13:42:57 | 显示全部楼层
这个延时跟buff无关吧,按gps模块的输出数据来看,一下子就超过512字节了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-18 15:32:56 | 显示全部楼层
解码后的数据用过w5500输出到后台,会不会是由于这个原因?

if(new_parse )                //有新的解码消息   
      {   
        /* 对解码后的时间进行转换,转换成北京时间 */
        GMTconvert(&info.utc,&beiJingTime,8,1);                       

        printf("\r\n时间%d,%d,%d,%d,%d,%d", beiJingTime.year+1900, beiJingTime.mon+1,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
        printf("\r\n位置精度因子:%f", info.PDOP);
                                printf("\r\n纬度:%f,经度%f",info.lat,info.lon);
//         printf("\r\n正在使用的卫星:%d,可见卫星:%d",info.satinfo.inuse,info.satinfo.inview);
//         printf("\r\n海拔高度:%f 米 ", info.elv);
        printf("\r\n速度:%f km/h ", info.speed);
//         printf("\r\n航向:%f 度\r\n", info.direction);
                                printf("\r\n双天线相对真北的航向:%f 度", info.HEADING);
                                printf("\r\n是否真北:%c\r\n", info.true_north);
                               
                                                               
                                sprintf(str, "AA,%d,%d,%d,%4.9f,%5.9f,%4.2f", beiJingTime.hour, beiJingTime.min, beiJingTime.sec, info.lat, info.lon, info.HEADING);
                                strcpy(buffer, str);       
                               
                                do_tcp_client();     /*TCP_Client 数据回环测试程序*/
                               
        new_parse = 0;
                                }



void do_tcp_client(void)
{       
   uint16 len=0;       
        switch(getSn_SR(SOCK_TCPC))                                                                                                           /*获取socket的状态*/
        {
                case SOCK_CLOSED:                                                                                                                         /*socket处于关闭状态*/
                        socket(SOCK_TCPC,Sn_MR_TCP,local_port++,Sn_MR_ND);
                  break;
               
                case SOCK_INIT:                                                                                                                                 /*socket处于初始化状态*/
                        connect(SOCK_TCPC,remote_ip,remote_port);                /*socket连接服务器*/
                  break;
               
                case SOCK_ESTABLISHED:                                                                                                              /*socket处于连接建立状态*/
                        len=sizeof(buffer);
                        memcpy(buff, buffer, len);               
                        buff[len]=0x00;         
                        send(SOCK_TCPC,buff,len);
                  break;
                       
                case SOCK_CLOSE_WAIT:                                                                                                              /*socket处于等待关闭状态*/
                        close(SOCK_TCPC);
                  break;

        }
}

好奇怪的是,最多延时十多分钟之久,这些数据存在哪里?如何修改?
回复 支持 反对

使用道具 举报

发表于 2015-12-18 15:37:16 | 显示全部楼层
经过网络也不至于吧,十分钟太长了。

你的网络部分怎么传输的不太清楚,你先直接在stm32本机上调试看看会不会有这么严重的延时
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-20 10:50 , Processed in 0.032203 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表