串口读来的数据有可能发生比特错位吗?
linux下用read()函数读取串口数据,读出来的用%c输出,有时正确,有时是乱码,波特率没有问题,请问会是什么原因呢?可能会出现比特错位的现象吗?
比如把 0x30 0x30 0x30 0x30 0x30 ( 0011000000110000001100000011000000110000 )
读取为 0x18 0x18 0x18 0x18 ... ( 00011000000110000001100000011000 ...) 错了一个比特位
如果是这样的话?是什么原因造成的呢?怎么解决呢?
如果不可能出现这种情况,那又会是什么原因呢?
我在网上找了很多资料,没有关于read()读取串口会出现比特错位的介绍!!
等待高手解决!!
[解决办法]
串口比特位出错应该是比较常见的吧,之前我在Windows下编程序读取串口的信息,也经常会有错误发生。不过至于是不是read()函数的问题,不好说。有可能是发送端的问题,也有可能是接收端的问题。很难笼统判断。
[解决办法]
或者可以将波特率降低点,比如9600,或者4800
[解决办法]
建议你从易到难,逐个排查:先排除最容易解决的可能原因(串口工作模式),然后再去考虑比较难解决的原因(驱动问题啊,read()函数啊之类的)。
还有一个问题就是你在测试串口的时候,远离干扰源,如果你的测试环境有很大的电磁干扰,那也会造成这种情况。
[解决办法]
fffff
[解决办法]
硬件是这一层肯定不会,硬件以上的层次可能会有问题
我觉得你八成是配置有问题,两头配得不一样。
[解决办法]