串口接收gps多组数据并解析

   最近做一个关于交通灯的项目,利用stm32串口接收gps数据并解析显示。刚开始用的原子的例程解析一条数据没啥问题,但同时解析多条数据就不行了,可能我说的不太清楚,直接上例子!

   因为用到的一般都是GNRMC,所以就设置了gps模块每次只发送这一条数据:

   $GNRMC,062709.200,A,3239.136368,N,11043.907211,E,0.46,101.58,190118,,,A*7E

 但是问题来了,现在我用别的设备发送数据,每次发送多条(条数还不确定),如:

 $GNRMC,062709.800,A,3239.136303,N,11043.907298,E,0.46,102.00,190118,,,A*76
 $GNRMC,062710.000,A,3239.136282,N,11043.907325,E,0.46,102.13,190118,,,A*7B

 可能是2条!

$GNRMC,062709.800,A,3239.136303,N,11043.907298,E,0.46,102.00,190118,,,A*76
$GNRMC,062710.000,A,3239.136282,N,11043.907325,E,0.46,102.13,190118,,,A*7B
$GNRMC,062710.200,A,3239.136255,N,11043.907350,E,0.46,101.92,190118,,,A*7B
$GNRMC,062710.400,A,3239.136234,N,11043.907378,E,0.46,101.31,190118,,,A*79
可能是4条,或者更多!!!

这样原子的gps例程解析就不正确了!原子用到的 strstr   函数总是返回的第一个相同字符地址指针,每次buf无论接收多少组数据,解析出来的都是第一组数据。

为了节约时间,最大限度的少改代码,通过修改strstr函数!!!

p1=(u8*)strstr((const char *)buf,"$GNRMC");这个指针永远指向buf的首地址,

修改位为:p1=(u8*)strstr(p1,"$GNRMC");执行过一次后每次p1都要加1,这样扫描到第二个“$GNRMC”并返回指针给p1!!

后续还有啥问题再补上!!!





  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值