我正在使用Windows中的串行通信进行编码。 在此通信中,为了使程序能够识别消息的开始,我必须使用奇偶校验位。
这意味着如果通过设置奇偶校验位接收的字节是消息的起始点。
例如,如果从串行端口接收如下字节
([byte]
表示接收到的字节,[byte]p
表示设置奇偶校验位的字节)
串行端口< - [byte]< - [byte]< - [byte]< - [byte]< - [byte] p< - [byte]:接收的序列字节
在丢弃设置奇偶校验位的字节之前的4个字节后,我必须解析消息。
对于Linux,设置奇偶校验位表示为0XFF 0x00
,因此如果我接收带有奇偶校验的1字节0xEE。
它表示为0xFF 0x00 0xEE
,因此我可以选择起点。
但是在Windows中,奇偶校验位似乎被EV_ERR
表示为事件WaitCommEvent()
并按ReadFile()
分别读取数据。
我认为很难找出奇偶校验错误发生在哪里来区分消息的起点。
有没有办法解决这个问题,实际上因为我是Windows编程新手,我认为必须存在其他方式,对吧?