1

我在 Windows 中使用串行通信进行编码。在这种通信中,为了让程序识别消息的开始,我必须使用奇偶校验位。

这意味着如果接收到设置奇偶校验位的字节是消息的起点。

例如,如果从串行端口接收如下字节([byte]表示接收到的字节,并且[byte]p表示设置了奇偶校验位的字节)

串口 <-[byte]<- [byte]<- [byte]<- [byte]<- [byte]p<- [byte] : 接收到的序列字节

在设置奇偶校验位的字节之前丢弃 4 个字节后,我必须在消息上方解析。

0XFF 0x00在 Linux 的情况下,如果我收到带有奇偶校验的 1 字节 0xEE,则表示设置奇偶校验位。它表示为0xFF 0x00 0xEE,以便我可以选择起点。

但在 Windows 中,奇偶校验位似乎由 表示为事件EV_ERR,并由WaitCommEvent() 分别读取数据ReadFile()

我认为很难找出奇偶校验错误发生在哪里来区分消息的起点。

有没有办法解决这个问题,实际上因为我是 Windows 编程的新手,我认为必须存在其他方法,对吗?

4

1 回答 1

0

文档似乎清楚地说明了如何处理(或不处理)奇偶校验错误:“由于操作系统确定是否引发此事件,因此可能不会报告所有奇偶校验错误”

于 2019-07-19T00:50:43.657 回答