【发布时间】:2015-11-11 13:17:49
【问题描述】:
我有一个设备,它会向我发送类似 [CommandID][Data][Data][CRC] 的消息。如果 CRC 不相等,我将跳过此命令,因为我知道命令长度。但是如果传输中丢失任何字节我该怎么办?
【问题讨论】:
-
你不想折腾整个消息。请参阅已接受的固定长度消息的答案:stackoverflow.com/questions/16177947/… 对于可变长度消息,可能需要寻找一个开始或同步字节。
-
该协议不足以保护您免受丢失字节的影响。它至少需要一个唯一的起始字节,以便您可以重新同步。还有一个 ACK/NAK 风格的握手,这样你就可以告诉发送器重新发送消息。您必须为 ErrorReceived 事件实现一个处理程序,并在收到 SerialError.Overrun 或 RXOver 时结束它。
标签: c# serial-port