Hast du denn einen EventChar definiert, damit das OnRxChar gefeuert wird?
So reagiere ich auf neue Daten:
Delphi-Quellcode:
procedure TRS232Thread.ComPortRxChar(Sender: TObject; Count: Integer);
var
Received: string;
CRPosition: Integer;
begin
(Sender as TComPort).ReadStr(Received, Count);
FResponse := FResponse + Received;
CRPosition := Pos(Chr(13), FResponse);
if CRPosition > 0 then
begin
FReceivedStr := Copy(FResponse, 1, CRPosition);
FResponse := '';
if MeasureDataValid(FReceivedStr, FValue1, FValue2) then
Synchronize(DoOnDataRead);
end;
FCycles := 0;
end;
Versuchs mal so, ich weiß ja nicht wie das Intervall deines Timer ist:
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
var
Str: String;
begin
(Sender as TTimer).Enabled := False;
try
ComPort1.ReadStr(Str, 10);
if str <>'' then
memo2.Lines.Add(stringtohex(str));
finally
(Sender as TTimer).Enabled := True;
end;
end;
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! |
engbarth.es