【摘要】:数据通信中的接收者可以通过差错检验来判断所接收的数据是否正确。许多红外线控制器就使用这种方法进行差错检验。将校验和形成的差错检验字节作为该报文的组成部分。
数据通信中的接收者可以通过差错检验来判断所接收的数据是否正确。冗余数据校验、奇偶校验、校验和和循环冗余校验等都是串行通信中常用的差错检验方法。
1.冗余数据校验
发送冗余数据是实行差错检验的一种简单办法。发送者对每条报文都发送两次,由接收者根据这两次收到的数据是否一致来判断本次通信的有效性。当然,采用这种方法意味着每条报文都要花两倍的时间进行传输。在传送短报文时经常会用到它。许多红外线控制器就使用这种方法进行差错检验。
2.奇偶校验
串行通信中经常采用奇偶校验来进行错误检查。校验位可以按奇数位校验,也可以按偶数位校验。许多串口支持5~8个数据位再加上奇偶校验位的工作方式。按数据位加上校验位共有偶数个0的规则填写校验位的方式称为偶校验;而按数据位加上校验位共有奇数个0的规则填写校验位的方式称为奇校验。
接收方检验接收到的数据,如果接收到的数据违背了事先约定的奇偶校验的规则,不是所期望的数值,说明出现了传输错误,则向发送方发送出错通知。
3.校验和
另一种差错检验的方法是在通信数据中加入一个差错检验字节。对一条报文中的所有字节进行数学或者逻辑运算,计算出校验和。将校验和形成的差错检验字节作为该报文的组成部分。接收端对收到的数据重复这样的计算,如果得到了一个不同的结果,就判定通信过程发生了差错,说明它接收到的数据与发送数据不一致。(www.chuimin.cn)
一个典型的计算校验和的方法是将这条报文中所有字节的值相加,然后用结果的最低字节作为校验和。校验和通常只有一个字节,因而不会对通信量有明显的影响。适合在长报文的情况下使用。但这种方法并不是绝对安全的,会存在很小概率的判断失误。那就是即便在数据并不完全吻合的情况下有可能出现得到的校验和一致,将有差错的通信过程判断为没有发生差错。
CRC循环冗余校验也是串行通信中常用的检错方法,它采用比校验和更为复杂的数学计算,其校验结果也更加可靠。
4.出错的简单处理
当一个节点检测到通信中出现的差错或者接收到一条无法理解的报文时,应该尽量通知发送报文的节点,要求它重新发送或者采取其他措施来纠正。
经过多次重发,如果发送者仍不能纠正这个差错,发送者应该跳过对这个节点的发送,发布一条出错消息,通过报警或者其他操作来通知操作人员发生了通信差错,并尽可能继续执行其他任务。
接收者如果发现一条报文比期望的报文要短,应该能最终停止连接,并让主计算机知道出现了问题,而不能无休止地等待一个报文结束。主计算机可以决定让该报文继续发送、重发或者停发。不应因发现问题而让网络处于无休止的等待状态。
相关推荐