串口通信设置了奇,偶校验,还要写函数来实现吗?
例如:options.c_cflag |= PARENB; /* Enable parity */
options.c_cflag &= ~PARODD; /* 为偶效验*/
options.c_iflag |= INPCK;
这样设置为奇校验,还需要写函数实现奇校验吗?
要写的话,该怎么写?
------解决方案--------------------
串行通信的奇偶校验有硬件(串行收发器)自动完成,不需要软件进行参与,若有校验错误,也会置位相应寄存器的相应位。
------解决方案--------------------
单片机方不用,但在PC接受方需要,不然,谁知道你有没有奇偶校验
------解决方案--------------------
我已经说的很清楚了,这部分功能是串口收发控制器完成的,无论是单片机还是pc,奇偶校验的实现只需要设置串行参数就可以了,单片机中是寄存器设置,而pc上,比如超级终端也有可以设置的地方,设置好了就ok了。软件不需要任何操作。
只不过奇偶校验有其局限性,不能保证数据百分之百正确,如果在高可靠性要求的情况下,可以采用其他校验方式,如校验和,crc校验等。