Hallo Marius,
ich nutze ein anderes Objekt zum Auslesen vom Comport. Dies ist aber kostenpflichtig (TMS Software).
Es könnte sein, dass das Ereignis "TriggerAvail" schon ausgelöst wird, aber noch nicht alle Zeichen da sind. Dann ist aber "Count" schon festgelegt. Entweder Du wartest noch eine kurze Zeit und dann rufst Du die Daten ab oder Du liest die Daten in ein globales Objekt ein und wartest, bis dort 2 oder 3 Zeichen drin sind.
Auf jeden Fall solltest Du "Data2" vorab leer machen.
Probiere dies doch mal mit dem Terminalprogramm aus, was ich letztens erwähnt hatte. Dann siehst Du wirklich, wann die Daten kommen
Delphi-Quellcode:
procedure TfrmMain.pegelTriggerAvail(CP: TObject; Count: Word);
var
Data: String;
data2:String;
d:Char;
I: Integer;
begin
{ OnTriggerAvail; Read the data }
for I:= 0 to Count-1 do
begin
d:=pegel.GetChar;
Data2 := Data2 + IntToHex(Word(d),2) + sLineBreak;
Data := Data + d;
end;
parse(Data);
//memData.lines.Add(data2);
end;
Wenn man die Daten einmal sortiert, dann sieht es doch schon ganz gut aus (siehe unten).
Dies bestärkt meine Vermutung, dass Du immer den Empfangsstring löschen mußt, bevor Du Daten sendest und dann die Daten in ein gloabes Array schreibst. Wie es aussieht, kommt der Event schon, wenn noch nicht alle Daten da sind.
A551
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50B00
A506024125
A519
A502
A50F