OpenEdv-开源电子网

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

寻找STM32串口数据处理最佳套路

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-9-26
在线时间
2 小时
发表于 2017-7-15 20:56:56 | 显示全部楼层 |阅读模式
5金钱
我的STM32的串口挂了一个GPS设备,采取TTL串口处理方式。举个例子:我需要知道GPS的经纬度数据,则单片机发送代码:log bestpos

这时GPS设备返回代码:
Input: log bestpos
<OK
<BESTPOS COM1 0 93.000000 FINE 1957 356153.000000 00000000 925910344 0
<        SOL_COMPUTED NARROW_FLOAT 29.56875249869 106.46597793903 249.0824 -39.0532 WGS84 0.0856 0.1029 0.2847 "0" 53.000 0.000 14 6 6 6 0 01 0 c0
Input: log bestpos


红色部分是我们需要的经纬度信息,其他数据也有其意义。

如果我需要知道GPS的方向角信息,则单片机发送代码:log heading
这是GPS返回代码:
Input: log heading
<OK
<HEADING COM1 0 93.000000 FINE 1957 356038.000000 00000000 925795345 0
<        SOL_COMPUTED NARROW_INT 0.3566 266.2639 -0.6249 0.0000 1.3481 4.2070 "0" 14 13 13 13 0 01 0 c3

其中红色部分是方向角信息。

我的问题是:怎么样在接收端采取和合理的数据结构,解决:
1,长度较长的数据的储存方法。(好的储存在与正确的储存和快捷的提取信息,同时保留足够多的信息)。
2,能够快速区分和提取不同的命令的返回代码的关键信息。(每个代码的返回个格式并不一定是统一的)。

其实很多串口设备都会出现这个问题。我目前的解决方式是根据数据格式进行字符的匹配,然后提取出自己所需要的信息。
但是这样做的灵活性不高,根据不同的设备都需要重新编写程序。请问各位大神平时在处理这一类数据的时候有没有一种较好的模板,
能够模块化的快速处理串口的信息,不论输出的类型有多少,长度有多长,能够高效准确的数据处理方式。



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

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2018-12-5
在线时间
41 小时
发表于 2018-12-21 20:39:46 | 显示全部楼层
大神你怎么解决的这个问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 17:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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