我在 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 编程的新手,我认为必须存在其他方法,对吗?