首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

串口丢失数据解决办法

2012-03-09 
串口丢失数据我在一台仪器上做测试,这台仪器使用DOS系统,使用串口与计算机相连,当仪器向计算机发送测试过

串口丢失数据
我在一台仪器上做测试,这台仪器使用DOS系统,使用串口与计算机相连,当仪器向计算机发送测试过程的数据时正常,但发送测试结果数据时老是丢失数据,如$7!1!2008-04-01!08:56!11.800!317.900!0*,计算机要么显示$7!1!2008-04-0108:56!11.800!317.900!0*(日期与时间之间的“!”丢失了),要么显示$7!1!2008-04-01!0856!11.800!317.900!0*(时间的小时与分钟之间的冒号丢失了),要么显示$7!1!2008-04-1!08:56!11.800!317.900!0*(日期的号数01显示为1,丢失了0),要么显示$7!1!2008-04-01!08:6!11.800!317.900!0*(8点56分把5丢失了)……各种情况都有,我请好多人看了程序,没有人能指出程序中有什么问题,有人说是串口遇到了干扰,可是为什么串口遇到干扰怎么只影响到测试结果的数据而不影响测试过程的数据呢?假如真的是因为干扰引起的,怎么消除干扰?还有人说串口的发送缓冲区溢出,假如是这个原因,请问怎么解决发送缓冲区溢出现象?

[解决办法]
干扰是很然避免的, 一般的做法是检查校验位, 如果接受端发现校验出错, 会发请求给发送端重发上一帧数据, 并且丢掉错误帧. 校验一般采用CRC, 奇偶校验也可以, 不过校验强度不够, 不建议用. 具体的通讯方法多种, 轮询, 制定特定通讯协议....不过发送端和接收端按照一定的协议通讯, 是最为常用的
[解决办法]
1. 串口线是否过长
2. 你用的波特率是多少,降低波特率是否还会出现。
3. 如果是干扰,那么出现的概率很低(如0.1%)
4. 如是是溢出,可以查看溢出标志位
说的不对处,请指正,谢谢
[解决办法]
首先定位错误,串口1 和 2 对接,使用串口调试工具看

可能你发送数据错误了
[解决办法]
你用个串口助手在windows下看看是否是仪器发数丢了。

热点排行
Bad Request.