4878|5

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:串口传输数据过程中,拔开串口线再接上,后续传输的数据会出现连续的乱码 [复制链接]

由一台PC机的串口向另外一台PC机的串口持续发送数据(持续满负荷发送1,115200波特率、8bits、1停止位、无奇偶),先开启发送端进行发送,在发送过程中打开接收端,此时很大概率会出现接收乱码(如发1收到L),错误码接收几百到上千个字符后又会自行变回1。。。。。。。
这个情况在两台PC机串口传输数据过程中,断开串口线再接上也会出现同样情况

更换过不同串口工具软件情况类型(只是乱码严重程度不同)

百思不得其解,因此向大家求助,希望能说明此问题原理!!!非常感谢。

最新回复

感谢各位的回复 这个问题我自己分析了一下,猜想如下: 如果将串口数据帧的起始位看作0,1位停止位看作1;那刚好“1”和“L”(即31和4C)是同一数据流中不同的分割方式,而且都可以得到正确的数据帧; 按此猜想,通过将奇偶校验位强制为0和1时,对比发1而收到的错误码,同样符合以上猜想。(此时对比时要注意加入奇偶校验位)因此我认为出现这个问题的主要原因是由于串口接收端没有正确的找到数据帧起始位造成,而是误将数据位的0当作了起始位,刚好这种组合同样能组成一个完整的数据帧; 如果的确是我的猜想的原因,那应该此问题属于串口传输机制上本身可能出现的问题;当然如果数据间间隔较长,起始位容易判断,接收数据很快就可以恢复成正常值。 先结贴给分了,感谢各位的回复,如果有对我的猜想不认同并给出其他合理解释,我可以另开贴给分,非常感谢。(哎 我主要是做软件的,对串口通讯,及硬件部分处理的东西不是很熟悉。。。。有什么错误请指教)  详情 回复 发表于 2007-9-7 09:52
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
這需要上層協議來保證數據的完整  。

明白沒?

就像網絡協議  IP 層不保證數據完整,提供了路由功能
而在上面的 TCP 保證了數據的完整。
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
感谢回复
我知道数据的完整需要上层来保证,不能苛求串口不出错或自动修复

但现在碰到的这个问题,个人怀疑是串口本身机制所造成的,希望能了解其原因和原理,尽量减少出现的概率,增加程序和设备的可靠性了

个人怀疑:由于接收端是在发送过程中开始接受数据的,可能没办法很正确的判断数据帧的起始位,如将数据位误判断为起始位和停止位,造成了接收数据的错位和偏移
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个要看你对缓冲区的处理,WIN的的串口是用缓冲区来管理的,如果接收不清空缓冲区,那么会造成缓冲区溢出,如果过于频繁地操作缓冲区,那么在清空的时候数据过来那么就可能会出错,

LZ说的长时间后会有出错的问题,不知道会不会是这个引起

另外一个,晶体的累积误差也可能会造成这个现象.....
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
异步传送,
可以按数据帧进行发送,在帧间加适当的延时.
帧长度短,则纠错快,但效率低.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
感谢各位的回复
这个问题我自己分析了一下,猜想如下:
如果将串口数据帧的起始位看作0,1位停止位看作1;那刚好“1”和“L”(即31和4C)是同一数据流中不同的分割方式,而且都可以得到正确的数据帧;

按此猜想,通过将奇偶校验位强制为0和1时,对比发1而收到的错误码,同样符合以上猜想。(此时对比时要注意加入奇偶校验位)因此我认为出现这个问题的主要原因是由于串口接收端没有正确的找到数据帧起始位造成,而是误将数据位的0当作了起始位,刚好这种组合同样能组成一个完整的数据帧;
如果的确是我的猜想的原因,那应该此问题属于串口传输机制上本身可能出现的问题;当然如果数据间间隔较长,起始位容易判断,接收数据很快就可以恢复成正常值。

先结贴给分了,感谢各位的回复,如果有对我的猜想不认同并给出其他合理解释,我可以另开贴给分,非常感谢。(哎 我主要是做软件的,对串口通讯,及硬件部分处理的东西不是很熟悉。。。。有什么错误请指教)
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表