打印

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

[复制链接]
9735|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 我很赞同
5
lai832| | 2010-12-14 22:55 | 只看该作者
协议或规律

是双方通信的关键.

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

如:字符串以\n结束,
句子以"."(句号)结束,
C的语句行以";"结束,
.........
还有如:以特定长度等等...

使用特权

评论回复
6
chenczy| | 2010-12-15 09:39 | 只看该作者
我用的是加头加尾的方法,即是所说的协议法,收到最后那个数据就是说明这段数据收完

使用特权

评论回复
7
batsong| | 2010-12-15 11:02 | 只看该作者
头尾的字节必须是不能在数据域出现,否则还应该加上一个长度字节

使用特权

评论回复
8
受不了了| | 2010-12-15 11:26 | 只看该作者
楼主参照MODBUS RTU就可以了

使用特权

评论回复
9
huguang0218| | 2010-12-15 14:47 | 只看该作者
写一个长度可以变化的RS485协议,必需的!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

766

帖子

2

粉丝