一个有关用MSCOMM控件做通讯的问题!(100分)

  • 主题发起人 主题发起人 nuaazyd
  • 开始时间 开始时间
N

nuaazyd

Unregistered / Unconfirmed
GUEST, unregistred user!
我做一个用Mscomm控件进行串行通信的用查询法接收数据的程序,源码如下:
设置一个定时器,当在5秒内收不到数据时,响应定时事件,在事件处理中将
timer1_on:=true.从而退出循环。
在循环体中,用了转移控制权的语句:Application.processMessages,以便响
应定时中断。我的源码如下:
timer1_on:=false;
mscomm1.inbuffercount:=0;
timer1.Interval:=5000;
timer1.Enabled:=true;
repeat
Application.ProcessMessages;
until ((Mscomm1.InBufferCount <>0)or (timer1_on = true));
timer1_on:=false;
timer1.enabled:=false;

....
开始收数据。

但现在当波特率设置为2400时,接收正常。但当波特率设置为9600时,接收
出错。
但如将Application.processMessages注释掉,定时器关闭,则接收正常。

请高手解答!! 3ks!.
 
近期的《电子报》有一篇关于MsComm做串口通讯的文章,较为详细,
可以作为参考。
 
如果使用查询法对MSCOMM颇显落后,因为MSCOMM本身就使用查询法产生ONCOM事件。
 
mscomm32控件本身有定时查询功能
在oncomm事件中响应即可。
 
mscomm32 控间有OnComm事件,当数据来到的时候触发,可以设置为每接收多少个字节触发
一次,也可以屏蔽OnComm事件。
还有,接受数据的波特率应该和发送的一致吧
具体还可以参看VB的MsComm控件帮助,里面讲的很清楚,还有sample。
 
msdn->vb->mscomm
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
后退
顶部