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!.
设置一个定时器,当在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!.