请教:关于计算机串口的问题(已解决)

[复制链接]
3546|5
 楼主| ejack 发表于 2009-10-25 10:14 | 显示全部楼层 |阅读模式
本帖最后由 ejack 于 2009-10-25 17:35 编辑

目前正在做一个CAN总线联网项目,调试的时候用CAN-232模块抓数据进计算机进行验证。CAN总线波特率10kbps,调试串口波特率57600。
现在发现在大量数据传输时,从串口调试软件抓取的数据总是有丢失,而联网设备(具备历史数据查询功能)相互之间通讯的数据全部正常。查看计算机抓取的帧数据,有许多头、尾健全(尾为数据校验和)而中间缺字节的现象。

首先怀疑是外购CAN-232模块的问题(缓冲太小?程序太烂?当时心中还小小鄙视了一下其厂商)。将自己的线路板稍加修改,自制转换模块,调试信息显示收帧数和发帧数全部OK、所有帧通讯正确率100%,可是计算机上抓取的数据还是不全。

其次怀疑是串口软件的问题,更换多款串口调试软件,现象基本相同(有些破烂一刷屏就丢数据……)

再次怀疑计算机串口设置问题。调节计算机串口的各项设置,包括调节16550的FIFO深度,均未有任何改善……

剩下只有怀疑:1.操作系统问题?2.这些串口调试软件使用的控件有bug或性能缺陷?在此请各位各抒己见,一解小可之疑惑。
古道热肠 发表于 2009-10-25 12:30 | 显示全部楼层
过去用串口与单片机高数据量通讯测试时的确遇到PC机接收时偶发性丢数据现象,最后是下位机采取出错重发的机制来解决,我的理解是因为PC机的串口是纯硬件收发,虽然Windows采用了中断机制优先保证数据不丢失,但仍没法保证接收不溢出.
而接口进化到USB时代,就很可靠了,因为它有硬件和协议保证上下位机数据通讯时出错的重发机制和超时异常报错机制在里面.
要想串口通讯可靠,必段建立完整可靠的通讯协议才能实现.
古道热肠 发表于 2009-10-25 12:31 | 显示全部楼层
PC机对外发送数据应该不会出错.因为发送是否成功,全由PC自已控制.
chunyang 发表于 2009-10-25 15:07 | 显示全部楼层
中断响应处理不及时会发生数据丢失,解决办法是引入双向协议。
李冬发 发表于 2009-10-25 17:25 | 显示全部楼层
10kbps就出现丢数据?
俺的115.2kbps下大块数据收发都没这问题的。你的串口必须设置一个大的缓冲区,仅设置fifo大小是不够的,还必须设置系统的串口驱动程序的缓冲区。得大到容下好几块的数据。
 楼主| ejack 发表于 2009-10-25 17:35 | 显示全部楼层
明白了,感谢楼上诸位。
看来自己写个PC的接收软件才好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

1142

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部