Windows串行通信,处理奇偶校验位

时间:2014-11-13 13:20:55

标签: c++ c windows serial-port parity

我正在使用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编程新手,我认为必须存在其他方式,对吧?

1 个答案:

答案 0 :(得分:0)

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