当前位置:编程学习 > VB >>

VB 3个mscomm3个串口时很卡

麻烦高手帮忙,两个串口时不卡,三个就很卡了,我用timer通过3个mscomm收发3个串口数据,但是有时程序会死机资源管理器显示也没有响应,而且用资源管理器也关不掉  有时不死机但是timer会变得很慢很慢,真的好烦哦,请高手帮忙 --------------------编程问答-------------------- 你可以试试写一个专门和串口通讯的程序,只收发数据不处理。
然后打开三次分别连到不同的串口。各自和主处理程序通讯。
不要把什么东西都写在一个程序里面 --------------------编程问答-------------------- 你有多少个下位机?处理通信的时间间隔是多少? --------------------编程问答-------------------- 谢谢二位:

wellescai:我接收数据时通过3个串口on_comm事件接收的,而发送数据是在timer里面将三个数据顺序发送到三个串口的

veron_04:我的下位机一共有三个,发送时是用timer每隔0.3秒将三个下位机的查询命令通过3个mscomm顺序发送出去,接收时是通过3个mscomm on_comm事件

恩,接收的3个串口内容分别是255字节,21字节,0字节(这个端口只发送不接受)
希望能有高手相助 --------------------编程问答-------------------- 增加Timer计时间隔或者增加波特率. --------------------编程问答-------------------- zdingyun:你觉得是什么问题呢,这个比较简单的办法我试过了 --------------------编程问答--------------------
引用 5 楼 lolersummer 的回复:
zdingyun:你觉得是什么问题呢,这个比较简单的办法我试过了


0.3S轮询256字节的COM口负担过重.在9600波特率下,理论能传递960字节.你1S约需处理800多字节 --------------------编程问答--------------------
我觉得你最好增加一个timer来处理收到的数据,这样vb(应该是vb6吧)才好做到“异步”而

不出现假死现象(因为vb不太支持多线程),如果你在oncomm事件里处理数据的话,再加上触发门限是一个字

符的话,就有可能出现假死现象,特别是波特率低时,大概1~3字符触发一次事件,想想看,接收255字节,要

运行啦多少遍oncomm事件处理程序呀,恐怖的时间消耗,如果你下位机响应格式是255字节的话,最好255字

节一次处理,触发门限设置为255,如果格式任意长度字节的话,这样用一个timer来实现最少的处理次数! --------------------编程问答-------------------- carefire:我也在试着把那个rtherold设为255,但是还没有试一试,今天准备试一下
Zdingyun:我的波特率是38400,还有个问题是两个com口在255字节和21字节的时候都没有问题,但是一旦加上另一个0字节的com口时就卡(这个com口只发不收) --------------------编程问答--------------------
引用 8 楼 lolersummer 的回复:
carefire:我也在试着把那个rtherold设为255,但是还没有试一试,今天准备试一下
Zdingyun:我的波特率是38400,还有个问题是两个com口在255字节和21字节的时候都没有问题,但是一旦加上另一个0字节的com口时就卡(这个com口只发不收)


你可以先试一下不用255字节传送的那个端口,用只发数据的端口和21字节的端口测试一下,这样可以判断一下是否是增加的这个端口的问题。 --------------------编程问答-------------------- 寡人已经解决了,确实是单线程问题,一定要用active exe才行,希望后来者别走那么多弯路
补充:VB ,  COM/DCOM/COM+
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,