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

多线程串口通信有关问题请问

2013-12-06 
多线程串口通信问题请教项目要求:1.有六个串口设备,并有六个测试通道2.六个通道可对六个设备选择,可能一个

多线程串口通信问题请教
项目要求:1.有六个串口设备,并有六个测试通道
         2.六个通道可对六个设备选择,可能一个通道一台,也可能一个通道六台
         3.这六个通关对仪器有不同的控制要求,并要读回数据作处理,要可以同时运行六个通道(六通道动作不同)
开发语言:VB6
OS:WINXP
我的作法:用六个TIMER控件写六个通道下的各种行为,点击指定按键,运行某个TIMER事件,当运行多个TIMER后,发现当后运行的TIMER动作时,先运行的TIMER暂停了
我查了相关资料说是在同一个窗体中同时这样运行六个TIMER是会出现我这样的情况,请问有何解决方法?

我目前了解和确认用MDI窗体作六个子窗体是可以实现要求,但有无方法在一个窗体中实现这样的行为?
[解决办法]
串口是极低速率设备,在 PC 上的处理不需要多线程。实际上,多个控件本身会各自处理自己的收发操作,你只需要在软件的事件处理中读写数据就是了。
[解决办法]

引用:
Quote: 引用:

不必用六个Timer控件,一个足够。

我这边目前查出来在用MDI窗体的作法中发现读回延时不同+DOEVENTS的使用可能是造成问题产生的原因,目前还在试.
TO:贝隆
1.你几年前上传的那个串口API的程序我试用了,发现不能连接我的设备,指令发送过去无效,因为没有时间就没有深究了,有空再研究.里面的API用法对我突破16个口限制有帮忙,这里先谢过;
2.你说在单窗体中用一个TIMER怎么实现,求教,因为在我的设计中,六通道以应六个TIMER,这六个TIMER通常只会运行一次,也即点击对应TAB页面上的测试键开始运行;六通道的测试项目也是不同的,运行的时间也相应的会是不同的.
3.呵呵,自从看了你的一些回复,一直想联系你,但不知道如何能找到你.


对于多串口通信,我通常的做法就是采用轮询,也就是在一个Timer中轮流读取各个下位机的数据,具体怎么区分?也很简单,就用Select语句来分别就是,实际上其效果和多线程并无区别。
[解决办法]
重入很烦人的,程序连退都退不出来,只能用end强行结束
耗时的代码最好分过程

热点排行