当前位置: 技术问答>linux和unix
串口读来的数据有可能发生比特错位吗?
来源: 互联网 发布时间:2016-07-08
本文导语: linux下用read()函数读取串口数据,读出来的用%c输出,有时正确,有时是乱码,波特率没有问题,请问会是什么原因呢?可能会出现比特错位的现象吗? 比如把 0x30 0x30 0x30 0x30 0x30 ( 0011000000110000001100000...
linux下用read()函数读取串口数据,读出来的用%c输出,有时正确,有时是乱码,波特率没有问题,请问会是什么原因呢?可能会出现比特错位的现象吗?
比如把 0x30 0x30 0x30 0x30 0x30 ( 0011000000110000001100000011000000110000 )
读取为 0x18 0x18 0x18 0x18 ... ( 00011000000110000001100000011000 ...) 错了一个比特位
如果是这样的话?是什么原因造成的呢?怎么解决呢?
如果不可能出现这种情况,那又会是什么原因呢?
我在网上找了很多资料,没有关于read()读取串口会出现比特错位的介绍!!
等待高手解决!!
比如把 0x30 0x30 0x30 0x30 0x30 ( 0011000000110000001100000011000000110000 )
读取为 0x18 0x18 0x18 0x18 ... ( 00011000000110000001100000011000 ...) 错了一个比特位
如果是这样的话?是什么原因造成的呢?怎么解决呢?
如果不可能出现这种情况,那又会是什么原因呢?
我在网上找了很多资料,没有关于read()读取串口会出现比特错位的介绍!!
等待高手解决!!
|
建议你从易到难,逐个排查:先排除最容易解决的可能原因(串口工作模式),然后再去考虑比较难解决的原因(驱动问题啊,read()函数啊之类的)。
还有一个问题就是你在测试串口的时候,远离干扰源,如果你的测试环境有很大的电磁干扰,那也会造成这种情况。
还有一个问题就是你在测试串口的时候,远离干扰源,如果你的测试环境有很大的电磁干扰,那也会造成这种情况。
|
fffff
|
硬件是这一层肯定不会,硬件以上的层次可能会有问题
我觉得你八成是配置有问题,两头配得不一样。
我觉得你八成是配置有问题,两头配得不一样。
|
这个不会有问题
|
可以确认,是配得不对,你看看你的停止位什么的。
|
串口比特位出错应该是比较常见的吧,之前我在Windows下编程序读取串口的信息,也经常会有错误发生。不过至于是不是read()函数的问题,不好说。有可能是发送端的问题,也有可能是接收端的问题。很难笼统判断。
|
或者可以将波特率降低点,比如9600,或者4800
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。