首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

串口读来的数据有可能发生比特错位吗?解决思路

2013-01-08 
串口读来的数据有可能发生比特错位吗?linux下用read()函数读取串口数据,读出来的用%c输出,有时正确,有时是

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

还有一个问题就是你在测试串口的时候,远离干扰源,如果你的测试环境有很大的电磁干扰,那也会造成这种情况。
[解决办法]
fffff
[解决办法]
硬件是这一层肯定不会,硬件以上的层次可能会有问题

我觉得你八成是配置有问题,两头配得不一样。
[解决办法]

引用:
建议你从易到难,逐个排查:先排除最容易解决的可能原因(串口工作模式),然后再去考虑比较难解决的原因(驱动问题啊,read()函数啊之类的)。

还有一个问题就是你在测试串口的时候,远离干扰源,如果你的测试环境有很大的电磁干扰,那也会造成这种情况。


这个不会有问题
[解决办法]
引用:
? ? linux下用read()函数读取串口数据,读出来的用%c输出,有时正确,有时是乱码,波特率没有问题,请问会是什么原因呢?可能会出现比特错位的现象吗?
? ? 比如把 0x30 0x30 0x30 0x30 0x30 ( 0011000000110000001100000011000000110000 )
? ? 读取为 0x18 0x18 0x18 0x18 ...? ( 00011000000110000001100000011000 ...) 错了一个比特位
? ? 如果是这样的话?是什么原因造成的呢?怎么解决呢?
? ? 如果不可能出现这种情况,那又会是什么原因呢?
? ? 我在网上找了很多资料,没有关于read()读取串口会出现比特错位的介绍!!
? ? 等待高手解决!!

可以确认,是配得不对,你看看你的停止位什么的。

热点排行