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

2019-07-21 06:32发布

我的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


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

如果我需要知道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

其中红 {MOD}部分是方向角信息。

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

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



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。