delphi:利用定时器读取串口返回数据

定时器20毫秒运行一次,单字符读取,如果读取到就保存到全局变量receData中,否则就输出到文本框中,并重置receData。

优点:单字符读取,解决了按长度读取的弊端,如果按长度读取,很多时候并不知道究竟要读取多长,有的时候能读取完整,有的时候只读取了部分。

procedure TfrmLC.tmrReceDataTimer(Sender: TObject);
var
  ch: Longint;
begin
  if (not booOpenSP) then
  begin
    Exit;
  end;
  ch := sio_getch(spPort);
  if (ch >= 0) then
  begin
    receData := receData + IntToHex(ch, 2) + ' ';
  end
  else
  begin
    if (receData <> '') then
    begin
      mmoMsg.Lines.Add('收<--:' + receData);
      receData := '';
    end;
  end;
end;

 

posted @ 2024-06-19 14:25  huiy_小溪  阅读(3)  评论(0编辑  收藏  举报