奇偶校验
有一个问题我一直想不通:就是串口通信的过程中,比如说偶校验:
假设传送的有效数据是7位,后面加上一个偶校验位:11001010,最后一位是偶校验位,'1'的个数总共为4个。
在传送传送的过程中,假设11001010中的其中两位变了10101010,此时接收方收到的数据是10101010,1的个数还是4个,最后一位的偶校验位还是0,请问此时如何判断数据传送错误了呢,如何认定这就是一个无效数据呢?此时1的个数并没有改变啊,还是4个。
[解决办法]
每种校验方法都有校验能力的问题。偶校验的校验能力就是只能校验奇数个错误,偶数个错误查不出来。
[解决办法]
奇偶效验的能力较差,但是因为硬件实现简单,所以还是常用;
通常,还会用软件方式对多字节数据做累加和效验,以及异或和效验。只要发生错误,就要求重发。
[解决办法]
协议里面顶一个教研位,协议解析的时候异或也可以啊,逐字节异或数据对比协议数据中的校验位。
[解决办法]
纠错/检错码的纠检能力一般和增加的冗余度成正比
只增加1bit的检错码,能有多强的纠检能力呢?
[解决办法]
是的,奇偶校验的能力并不是很强,出现你上面提到的情况是完全可能的。
[解决办法]
无法检测到错误
理论上的限制,如果有必要,采用别的效验算法
[解决办法]
用CRC吧
[解决办法]
232奇偶校验位由硬件完成,与软件无关。