用MScomm控件读写16台仪表,不要用sleep()低效延时,应该用什么策略???今天都在线等(100分)

  • 主题发起人 主题发起人 yuzhi2005
  • 开始时间 开始时间
procedure myProcedure();
var
WaitTime1: TDateTime;
begin
WaitTime1:=Date+Time;
while ((Date+Time) < (WaitTime1+EncodeTime(0,0,0,500))) do
begin
Application.ProcessMessages;
if MainForm.MSComm.InBufferCount=52 then
begin
InputLen:=MainForm.MSComm.InBufferCount;
wendu_inputstring:=MainForm.MSComm.Input;//直接以ASCII码形式接收数据
string_dingwei:=pos('*',wendu_inputstring);//定位读入的字符串
break;
end;
end;
end;

这段代码的意思就是在500毫秒的时间内一直循环查看串口接收缓冲区里是否有收到52个字节的数据,如果有收到就把数据读取出来.
在循环里加上Application.ProcessMessages;可以使你的程序在采集数据时可以做其他操作(比如移动界面等),使程序看起来没有死的感觉.
 
hn_chx,谢谢啊
 
学习,学习
 
后退
顶部