怎样判断串口接收一组数据完毕?

[复制链接]
10738|8
 楼主| gmgmgm 发表于 2010-12-14 17:15 | 显示全部楼层 |阅读模式
由于每次接收的数据长度不一样,少的就3个8位数据,多的时候有十多个,这个数据个数是不定的,且没规律的数据,有什么好的方法让它接收完整?第一次弄RS485接收的,弄了半天,烦
wangyy608 发表于 2010-12-14 17:54 | 显示全部楼层
一段时间之内没收到数据

评分

参与人数 1威望 +1 收起 理由
gmgmgm + 1

查看全部评分

HWM 发表于 2010-12-14 18:38 | 显示全部楼层
re LZ:

传输的数据中增加适当的“协议”,这是通讯中所必须的。如你所说的情况,至少得加入数据的长度信息,以便接收方得到数据充分的格式信息。
chunyang 发表于 2010-12-14 19:09 | 显示全部楼层
两种方法:协议法和超时法。
协议法指通讯双方约定数据包中某一特定位置的数据代表数据包长度,或者利用特殊字符作为结束标志。
超时法指数据停止发送若干时间后即认为当前数据包已完成接收。

评分

参与人数 1威望 +1 收起 理由
gmgmgm + 1 我很赞同

查看全部评分

lai832 发表于 2010-12-14 22:55 | 显示全部楼层
协议或规律

是双方通信的关键.

如果甲使用代数运算处理1+1
与乙使用布尔运算处理1+1,
两者结果是完全不一样的,意义也不一样.

如:字符串以\n结束,
句子以"."(句号)结束,
C的语句行以";"结束,
.........
还有如:以特定长度等等...
chenczy 发表于 2010-12-15 09:39 | 显示全部楼层
我用的是加头加尾的方法,即是所说的协议法,收到最后那个数据就是说明这段数据收完
batsong 发表于 2010-12-15 11:02 | 显示全部楼层
头尾的字节必须是不能在数据域出现,否则还应该加上一个长度字节
受不了了 发表于 2010-12-15 11:26 | 显示全部楼层
楼主参照MODBUS RTU就可以了
huguang0218 发表于 2010-12-15 14:47 | 显示全部楼层
写一个长度可以变化的RS485协议,必需的!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

766

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部