打印

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

[复制链接]
2937|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 | 只看该作者
中断响应处理不及时会发生数据丢失,解决办法是引入双向协议。

使用特权

评论回复
5
李冬发| | 2009-10-25 17:25 | 只看该作者
10kbps就出现丢数据?
俺的115.2kbps下大块数据收发都没这问题的。你的串口必须设置一个大的缓冲区,仅设置fifo大小是不够的,还必须设置系统的串口驱动程序的缓冲区。得大到容下好几块的数据。

使用特权

评论回复
6
ejack|  楼主 | 2009-10-25 17:35 | 只看该作者
明白了,感谢楼上诸位。
看来自己写个PC的接收软件才好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

1142

帖子

0

粉丝