大家好!我的串口在代码中设置了奇校验,然后通过上位机接收数据,如果上位机设置了无校验则打印乱码这个正确,但是设置为偶校验和奇校验都打印正确,按理说上位机设置为偶校验应该打印乱码的啊?????????? 这个是什么道理呢?
仔细检查下代码吧
有无校验,一个字节帧的长度不同,导致对起始位识别错误,所以乱码,而且字节个数也会错。而奇偶校验,对字节的接收完整性并不影响,上位机程序如果没有对校验错的字节进行特别提示,那就看不出来。因为显示字符时,又不显示校验位。
我认为上位机只是接收了校验位,但未进行校验位的判别,所以不报错,你可以多尝试几个上位机软件,常用的有:eaglecom, sscom, putty等等,多试几个。我认为微软提供的串口控制接口应该是有这个校验位判断的能力的,上位机开发者只需要调用判别并提示给用户即可。
上位机接受了校验位,但是未进行校验类别的判断,字节长度的不同,导致起始位判断问题,但是设置为偶校验,上位机没有对错的字节进行提示,那就无法显示
串口两端的设置要一致,才能确保正常、正确通讯。