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

怎么提供mscomm的通信效率

2013-11-30 
如何提供mscomm的通信效率背景:和AT89C51ED2的bootloader通信。ED2的bootloader会收到一个字节就立即返回这

如何提供mscomm的通信效率
背景:
和AT89C51ED2的bootloader通信。ED2的bootloader会收到一个字节就立即返回这个字节。
使用了485,但485是个半双工的通信方式。而ED2的bootloader是双工通信。
如果上位机连续发送,ED2立即返回接受的字节,会在485总线产生冲突,从而不能正常通讯。

处理方法:
VB 用mscomm控件写上位机发送程序,一次发送1个字节,延时等待(或者在接收事件中再发生下一个字节)接收到返回的1个字节后再发送下一个字节。

问题:
VB的整个过程效率太低下了,57600波特率,2个停止位,发送64K数据(实际还要增加大约10%的命令头,尾等信息)需要大约22分钟。
而厂家提供的双工模式下的通讯程序只要1-2分钟。

即使双工变半双工,理论上应该2-4分钟就可以完成。

怎么提高速度?

[解决办法]
多种选择:

1 采用 4 线制 RS-485 架构,做成全双工。

2 仍采用 2 线制 RS-485 架构,每字节切换传输方向。在 PC 端,不要采用延时方式,而是使用 OnComm 事件触发,接收并发送一字节。
[解决办法]
PC 的速度是很快的。如果没有有意的延时,一般不会影响到串口通讯的速度。

问题是否出在 RS-232 转 RS-485 的环节?

你一定要得到芯片返回的字节吗?如果不是必要的,在从机硬件方面做一些改动,在这个操作期间,芯片的 TXD 不要连接到 RS485 去,RS485 的 2 条线仅用作主机发送的差分信号。把芯片返回数据忽略掉。

如果一定要返回的字节,就改成 4 线制,或者找能够更快转换发送方向的 232-485 转换器。

有一点你没有说清楚,厂家双向模式的程序不是用当前 RS485 环境测试的吧?
[解决办法]
其实很容易确定问题出在那个环节。

你的发送和接收到一个字节时,都 Debug.Print Timer。看看哪一个环节时间长。我估计是消耗在等待数据进来的环节上了。
[解决办法]
还有一点,你和转换器的波特率是 57600,并不意味着 RS485 线上的波特率也是这么高。RS485 远距离传输时,波特率一般都低于 9600。距离越远,可实现的波特率就越低,有用 1200 的。

因此,与 RS232 传输相比,速度差个几倍十几倍,很正常。
[解决办法]
为什么要每个字节处理?你可以一块块发-收
全双工可以使用422总线,反正51也支持全双工
[解决办法]
估计 Bootloader 不是他写的,是原厂商预装的。

另外,在 4-线全双工 方面,RS-422 与 RS-485 没有本质区别。
RS-485, like RS-422, can be made full-duplex by using four wires. Since RS-485 is a multi-point specification, however, this is not necessary in many cases. RS-485 and RS-422 can interoperate with certain restrictions.
[解决办法]

引用:
估计 Bootloader 不是他写的,是原厂商预装的。

另外,在 4-线全双工 方面,RS-422 与 RS-485 没有本质区别。
RS-485, like RS-422, can be made full-duplex by using four wires. Since RS-485 is a multi-point specification, however, this is not necessary in many cases. RS-485 and RS-422 can interoperate with certain restrictions.


还是有差别的
485在多点连接场合是可以两两通信的,改为4线制后,将失去这种功能,只能用于一个主机和若干从机的通信
[解决办法]
并非如此。

RS-485 是 RS-422 的超集,反过来说,可以认为 RS-422 是 RS-485 的子集。

1 RS-422 只能有一个主,其他都是从。

2 在 2 线模式下,RS-422 是单向的。扩展到 4 线可以双向通讯。

3 RS-485 是点对点架构。通常不采用 4 线的原因是,它天然地支持点之间相互通讯(2 线下可认为是半双工)。扩展为 4 线后,可以成为全双工。但多数应用下不需要这样做。

在 RS-485 总线系统中可以兼容 RS-422 的线段。

详见 EIA 相关规范。

具体到这个应用,在 4 线下两者功能上没有区别。
[解决办法]
很抱歉。不是有意要反驳,实在是希望初学者能够得到正确的信息。
[解决办法]
的确,MSComm 的切换模式时,特别是需要 Close 再 Open 时明显迟缓。此时宜用 API 来直接控制。

热点排行