OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9243|回复: 1

串口从数据包中筛选出有用数据,求教了,筛不出来啊

[复制链接]

7

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-2-5
在线时间
0 小时
发表于 2012-2-26 11:01:58 | 显示全部楼层 |阅读模式

最近调gps接收有用数据,只需要接收“$GPGGA,024016.00,3900.91123,N,11226.67534,E,1,06,1.62,854.2,M,-20.2,M,,*7E   ”即可,我的思路是监测“GGA,"然后数组存储直到监测到*结束,可是发十几次也就有一次能收到,很不稳定,各位给看看程序出了什么问题。一下是发送的数据包。

$GPVTG,33.18,T,,M,0.390,N,0.723,K,A*08
$GPGGA,024016.00,3900.91123,N,11226.67534,E,1,06,1.62,854.2,M,-20.2,M,,*7E
$GPGSA,A,3,29,04,05,08,10,15,,,,,,,3.21,1.62,2.78*0D
$GPGSV,3,1,11,02,46,111,25,04,13,117,27,05,65,025,37,07,09,048,12*7D
$GPGSV,3,2,11,08,15,081,28,10,14,064,32,15,30,201,36,21,05,303,*77
$GPGSV,3,3,11,25,00,245,,26,62,159,25,29,47,289,20*4E
$GPGLL,3900.91123,N,11226.67534,E,024016.00,A,A*6E

程序
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==SET ) //监测接收是否挂起
  {
   
   if(USART_ReceiveData(USART1)=='G')
   { USART_ClearFlag(USART1, USART_FLAG_RXNE); //清除挂起
    t=0xffff; GPIO_SetBits(GPIOD,GPIO_Pin_8);
    while((USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!=SET )&&t)t--;
    {  
     
     if(USART_ReceiveData(USART1)=='G')
     {   USART_ClearFlag(USART1, USART_FLAG_RXNE);
      t=0xffff;  GPIO_SetBits(GPIOD,GPIO_Pin_9);
      while((USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!=SET )&&t)t--;
      { 
       
       if(USART_ReceiveData(USART1)=='A')
       { USART_ClearFlag(USART1, USART_FLAG_RXNE);
        t=0xffff; GPIO_SetBits(GPIOD,GPIO_Pin_10);
        while((USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!=SET )&&t)t--;
         {  
       
           if(USART_ReceiveData(USART1)==',')
             { USART_ClearFlag(USART1, USART_FLAG_RXNE);


              for(i=0;menu0!='*';i++)
              {
               
               while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!=SET );
               
               menu0 = USART_ReceiveData(USART1); USART_ClearFlag(USART1, USART_FLAG_RXNE);
              }
            
              

               USART_SendChar('a');
             
             }
         }
        }
      } 
     }
    }  
   
   }
 
  }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-26 11:42:24 | 显示全部楼层
回复【楼主位】ghl455702354:
---------------------------------
这个用jtag最好调试了.
用jtag调试看看就知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 23:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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