51单片机串口接收不定长数据

2020-01-13 18:37发布

请教大神,单片机串口如何接收不定长数据啊 ,比如 0x01+0x03+len+data0....datan CRC_H  CRC_L 写了一下午没啥成果
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
fchen2
1楼-- · 2020-01-15 06:35
建立缓冲区接收数据, main中进行帧判断. 这样容易移植
talkingbeast
2楼-- · 2020-01-15 07:02
   用缓冲区接受,超时从缓冲区取数据判断,这样做通用性很强。
vjcmain
3楼-- · 2020-01-15 09:34
talkingbeast 发表于 2015-12-15 22:36
用缓冲区接受,超时从缓冲区取数据判断,这样做通用性很强。


  超时从缓冲区取数据判断这个怎么理解? 还请指点
1328616904
4楼-- · 2020-01-15 15:31
 精彩回答 2  元偷偷看……
talkingbeast
5楼-- · 2020-01-15 15:59
vjcmain 发表于 2015-12-15 22:40
超时从缓冲区取数据判断这个怎么理解? 还请指点

  1.接收数据存放在缓冲区中;当接收字节超时发生时,调用数据处理函数;
  2.数据处理:从缓冲区中获取接收到的数据流,判断是否符合modbus协议或者自定义协议格式,然后判断;
这样的架构可以处理多种协议格式,比如没有包头包尾结构的modbus协议;或者有包头包尾的协议;接收数据长度固定和可变都可以处理,通用性很好。
miaoguoqiang
6楼-- · 2020-01-15 19:10
就是判断相邻两个数据之间的间隔。比如超过10ms就判定接收完成一帧数据。

一周热门 更多>