串口接收不定长数据的解析问题

发布于 2019-12-06 14:49:18
1.目前在做一个通过LoRa模块把传感器的数据经过LoRa网关向阿里云服务器上传数据并WEB可视化的项目,数据上行部分已经完成,目前实现的效果可以看这个连接:https://fastadmin.rt-thread.org/ask/question/422826.html
2.把传感器数据上传到阿里云服务器只是这个项目的一部分,获取阿里云平台下发的指令并响应更是重点,但是目前在做下行数据解析的时候遇到一些问题,还请大家帮忙解决。
数据解析.png
3.如上图所示,整个的数据分为3部分:分别为LoRa模块发给MCU的信息,平台回复给MCU的信息,和平台下发的指令,可以看到这个LoRa模块并不像我们使用的ESP8266那样回复简单的OK或者错误码,而是有很多别的信息比如说信号强度等,我的目的就是想从这些不必要的信息中,提取关键的信息,比如OK+SEND=24 OK+SENT=1 OK+RECV:00,0a,08,0c0c0d0332085a0a,
我尝试过通过判断消息的长度来区分消息,但是有问题,各位大神有没有更好的方法?

查看更多

关注者
0
被浏览
589
5 个回答
tyustli
tyustli 2019-12-07
不定长数据的话需要自己定义协议的,例如只接收 OK + 开头的数据,这些都是可以自己定义的
coulson
coulson 2019-12-07
tyustli 发表于 2019-12-7 15:31
不定长数据的话需要自己定义协议的,例如只接收 OK + 开头的数据,这些都是可以自己定义的 ...


我不能定义这个,数据都是自动发的,我改不了,只能想办法接收
coulson
coulson 2019-12-09
tyustli 发表于 2019-12-7 15:31
不定长数据的话需要自己定义协议的,例如只接收 OK + 开头的数据,这些都是可以自己定义的 ...


前辈你说的这个具体怎么做啊,能详细的说一下吗?我被这个问题搞了两天了
tyustli
tyustli 2019-12-16
    本帖最后由 tyustli 于 2019-12-16 10:26 编辑


coulson 发表于 2019-12-9 19:50
前辈你说的这个具体怎么做啊,能详细的说一下吗?我被这个问题搞了两天了 ...

比如第一个接受的数据是 O 就继续接收,不是就开始下一次接收,接收到 OK 后后面的才是真正的数据
Bill池
Bill池 2019-12-16
用串口的空闲中断+串口的DMA接收,可以很完美的实现串口动态接收不定长数据。用这种方法我处理过2G模块和串口wifi的数据接收,还没出现问题过。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友