问题:
为什么我的串口接收事件,要在线程执行完后才执行的啊,这样函数返回来的值就不对了(前一次的测试结果);请问如下解决
我的线程主要代码是
procedure OneThread.Execute;
var
times:byte;
A,B:String;
begin
   A:=SendString('?'+#$D#$A);     //读电阻值(函数如下)
   B:=SendString('?'+#$D#$A);     //读电阻值
end;//--------------读电阻值函数---
function OneThread.SendString(const str: string):String;
begin
   FrmMain.Comm1.WriteCommData(Pchar(str),Length(str));
   sleep(550);
   result:=Resistance;  //Resistance为全局变量
   //每条指令发送出去时,接收是有一定的时间限制的,通常发送与接收的时间间隔100毫秒
end;
串口接收代码如下
//-------------------串口接收事件-----------------------------------
procedure TFrmMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
str :string;
Resistance:string;
StrOfAdd,Empty:byte;
begin
  SetLength(Str,BufferLength);
  move(buffer^,pchar(@Str[1])^,bufferlength);
  try
    //查找加号的位置+1
    StrOfAdd:=pos('+',str)+1;
    //查找空格的位置
    empty:=pos(' ',str);
    //取出电阻值
    Resistance:=COPy(str,strofadd,empty-strofadd);
    ResistanceValue:=strtofloat(Resistance);   //赋给全局变量    //取出电阻值+单位
    Resistance:=COPy(str,strofadd,empty-strofadd+3);
    //memo2.Lines.Add(resistance);
    LEDResistance.Caption:=resistance;
  except
    exit;
  end;
end;