打印

数据校验

[复制链接]
1365|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7120223|  楼主 | 2009-7-21 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做单片机串口通信时,单片机要接受一帧数据为六个字节,前两个字节为数据头,中间三个为数据,最后一个为校验位。现在有个疑问,当单片机通信要是上位机发了一帧数据,但是数据头有了 ,数据后面出错了 ,发成了五个字节的数据了。这样的话 我单片机 怎么能判断数据出错呢?因为没有到六个,所以我程序中不好判断对于错?所以程序中只能等到 下一帧数据来 才能发现错误。请大虾们指导一下,你们是怎么解决?

相关帖子

沙发
jerkoh| | 2009-7-21 11:47 | 只看该作者

re

开始接收就 重装定时器初值  比如9600波特率 一字节算1MS
如果2MS没来数据了就定时器益处做标记  做函数看到这标记  就认为收完一帧

一看只有收了5字节 就丢弃了
等下次重新开始

如果要求比较严格的数据传送 就要在收在错误数据后发请求再发一边的命令

使用特权

评论回复
板凳
7120223|  楼主 | 2009-7-21 17:30 | 只看该作者

不明白?

在数据来的时候,是中断接受啊!定时器 呢?优先级比定时器高么?
是不是在中断接受完了就开启定时器来计时,超过时间就算数据完了。有点糊涂啊!

使用特权

评论回复
地板
WOAILYMD| | 2009-7-22 14:44 | 只看该作者

如果只收到5个字节,则缓冲区第6个字节就是0,就不是校验

使用特权

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

本版积分规则

105

主题

389

帖子

0

粉丝