In deinem Code sehe ich nicht, wie du Daten empfängst.
Achtung unter Delphi7 sind AnsiChar Char.
Bei meinem Laufbandprojekt empfange ich so und reagiere darauf:
Delphi-Quellcode:
const
Co_PAUSE = 2;
Co_SCHNELLSTART = 3;
procedure TMainForm.ComPortRxChar(Sender: TObject; Count: Integer);
var
A: String;
C: AnsiChar;
I: Integer;
begin
if Count = 1 then
begin
ComPort.Read(C, 1);
case Ord(C) of
Co_PAUSE : begin
if pan_start.Caption = 'Pause' then
pan_start.OnClick(self);
end;
Co_SCHNELLSTART: begin end;
Co_SCHNELLSTOP : begin end;
Co_LANGSAMSTART: begin end;
Co_LANGSAMSTOP : begin end;
Co_AUFSTART : begin end;
Co_AUFSTOP : begin end;
Co_ABSTART : begin end;
Co_ABSTOP : begin end;
end;
end else
begin
for I := 1 to Count do
begin
ComPort.Read(C, 1);
A := A + Char(C);
end;
lab_IstAnalog.Caption := A;
end;
end;
Bei Messungen würde ich aber mit Checksummen arbeiten, um Falschmessungen auszuschliessen.