VB 串口通讯奇怪现象?

来源:百度知道 编辑:UC知道 时间:2024/09/23 08:21:50
我用的是VB中 mscomm控件。做了一个测试电机的小程序。我用新式的台式机测试,速度3秒钟完成。但用笔记本电脑与旧式台式机,速度变为20秒。测试软件及电路及串口连接线都不变的情况下,电脑一更换速度就会变掉,而且相当的离谱,请高手告之是何原因?在不使用API的情况下如何解决?怀疑自己用的MSCOMM控件有不足的地方,请高手指证。高分求助。

1、InBufferCount属性用于返回输入缓冲区内等待读取的字节个数,可通过设置该属性为0来清除接收缓冲区。InputLen属性用于设置并返回每次Input属性从接收缓冲区中读取的字符数,其缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。
故接收数据大小没有限制。但要注意发送端OutBufferCount属性,该属性用于设置或返回发送缓冲区大小,值为Integer型,表示传输缓冲区的字节数,缺省值为512字节。
2、发送:MSComm1.Output = Text1.Text
接收:If MSComm1.InBufferCount > 0 Then
Text2.Text = Text2.Text + MSComm1.Input
不用textbox的话可以定义一个指针来发送和接收数据。
3、你去查一下senddata定义的数据类型。最大收发数,由数据类型来限制。

4、应该是使用socket对像的getdata与senddata方法来完成。
你最好写两个程序,一个服务端,一个客户端。这样服务器端监听,客户端联接。两者握手联接后,就可以通信了。

很明显是你程序写得有问题。一般都是瞬时完成。我用的笔记本是酷睿2.0G,1G内存。你用定时器,每半秒通信一次。一次可以读20个数据的。如果小于200ms通信,可能电机那边的下位机反应不过来。
也许控件的版本和系统不兼容,但是我的vb6.0迷你版和xp没问题的。
也许是所有的计算变量你用的是控件的文本属性,而不是变量,这样也会使速度变慢的。

变为20秒?
1、
是否将所有代码都放在了text里面,并且随时刷新,这样很耗费资源的,在电脑配置相差较大的时候,时间差别很明显,如果是这样,程序应该接近于不响应
办法:放到string变量中,最后再显示
2、是否mscomm版本问题,建议将程序打包后安装在别的电脑上试

3秒都有点夸张了,别说20秒了,你的程序写的肯定有问题

mscomm控件没有那么弱智,还是能用的

应该不是机子的问题,程序的不完善会造成这样的情况。