【求助】mscomm控件做的串口通讯修改波特率怪现象本帖最后由 grf123 于 2012-02-10 09:34:10 编辑RT,做的一
【求助】mscomm控件做的串口通讯修改波特率怪现象
本帖最后由 grf123 于 2012-02-10 09:34:10 编辑 RT,做的一个和DSP通过串口通讯的软件,要求在软件运行过程中修改波特率。
当发送一个修改波特率的命令后,设备会转换波特率,之后给一个答复,软件这边获得答复之后予以提示。
但是我遇到的问题是:在开发机平台上:测试没有丝毫问题。
但是同样的设备,同样的软件环境,在别的机器就无法通过。具体表现为波特率修改命令发出来了,但是设备给的答复无法获得。调试发现根本没办法触发oncomm事件。
我想API肯定能够完美解决这个问题,但是用API改就得一切推倒重来了。。。希望大家给点指点。。。
具体代码如下:
Radar_Main.SendCommand (S) '发送修改波特率的命令
StrCommID = Radar_Main.MSComm1.CommPort '存储串口
Radar_Main.MSComm1.PortOpen = False '关闭串口
Radar_Main.MSComm1.CommPort = StrCommID '重新指定串口,完成串口重新初始化
Radar_Main.MSComm1.Settings = DisBaudRate & ",n,8,1" '重新设置波特率
Radar_Main.MSComm1.PortOpen = True '开启串口
[最优解释]我认为问题不是API不API的问题。应该在你对通信没有使用正确。
下位机的波特率修改了,你的上位机的MSComm的波特率是否也该修改?且这个修改应该在读命令之前进行吧?
[其他解释]思想是这样的:上位机先发送命令,再修改波特率,等待下位机修改波特率之后的反馈。
我现在已经查到问题产生的原因了。。。我本机测试使用的是物理串口。而测试机器上用的是USB转的串口。问题应该出在USBTOCOM这一步。不知道大家有没有好的办法。
[其他解释]不会吧???
如果是这个问题,那是硬件驱动的问题?不可思议。。。。呵呵
[其他解释]果然微软的驱动才是王道。。。
我估计是由于串口线反应迟钝,适应不了波特率的改动。。。现在加个延迟再看看。。。没问题的话上来结贴。
[其他解释]是不是你的波特率太高?有些品质差的USB转RS232是不能用在高波特率的情况下的。
[其他解释]该回复于2012-02-10 11:20:29被版主删除
[其他解释]这个我也看到了。。我的很一般的设备。最高到38400,最低9600.就是转换波特率的时候就无法触发oncomm事件。。。让人DT啊。。。。。
[其他解释]DT是什么意思?
话又说回来了,在一般的串口通信中,我还没有涉及过通过通信改变波特率的。有无通信协议提供?
[其他解释]DT意思就是那个很痛。。。
通信协议无非是发个字符串,接收个字符串...
问题解决了。。。
我领导说是计算机反应太慢了(应该是说硬件)。。那个USB线还没来得及改波特率DSP就已经返回了。。。
他把DSP程序改了下,现在就好了。
[其他解释]原来DT=蛋痛 我OUT了
你们领导很牛!还能自己动手!还会自己动手!!动手还手到病除!!! 仰视一个
[其他解释]这就是差距啊。。。我结贴了。