我正在通过COM端口与分配器进行通信。
它发送DLE-STX-DATA-DLE-ETX-CRC
.如果 2 字节 CRC 不同,我会用NAK
回应,否则用ACK
回应。目前为止,一切都好。但是,如果缺少 2 字节 CRC 中的字节怎么办。那我该怎么办?它还包含两个字节。
例如,预期的 CRC0x11 0x31
,但它返回0x31 0x10
(即使没有我发送NAK
,它也0x10已经是它尝试返回DLE-STX-DATA-DLE-ETX-CRC
的一部分!
对于CRC本身缺少字节,我该怎么办?
如何恢复?
预期行为:
- 设备:
DLE-STX-DATA-DLE-ETX-CRC1-CRC2
- 结直肠癌不匹配
- 我:
NAK
- 设备:
DLE-STX-DATA-DLE-ETX-CRC1-CRC2
实际行为:
- 设备:
DLE-STX-DATA-DLE-ETX-(missing byte)-CRC2-DLE
- 结直肠癌不匹配
- 我:
NAK
- 设备:
STX-DATA-DLE-ETX-CRC1-CRC2
事实证明这是无法解决的。即使是富士通官方实用程序也无法处理这种情况。即使处理了COM端口也变得不可用,并且需要重新启动计算机。您只能因此错误而正常失败。