《表4 定长数据帧示例:基于STM32的多串口并行传输系统设计》
当数据帧是定长时,例如如表4所示的一种读卡器的协议,可以直接一次接收18个字节,然后判断结束标记字符。不加超时功能时,一旦有非18个字节数据,例如只收到16字节,数据不足,会用接收的下一帧数据的前2字节补入,这样导致后续读到的数据都有误。增加接收18个字节的超时功能后,如只收到部分数据,超时时间到会放弃该次接收的数据,后一帧数据正常则能恢复正常接收。这种方法启动超时的时刻需要保证是在接收到第一个字节后,如果不是,例如启动接收就开始超时计时,数据可能在超时结束的时候才收到部分数据,另外一部分数据就丢失了,如图3所示。如果某种情况下收到的数据多于18字节,如果前18字节不是完整数据,也会导致数据丢失。这些异常一般情况下出现的机率不大,但在收发方调试的情况下经常出现。
图表编号 | XD0036334900 严禁用于非法目的 |
---|---|
绘制时间 | 2019.01.25 |
作者 | 陈旭辉、杨红云 |
绘制单位 | 武汉纺织大学数学与计算机学院、湖北大学教育学院 |
更多格式 | 高清、无水印(增值服务) |