'loha Folks,
über das OnRxChar Ereignis der CPort Library werden alle an einem bestimmten virtuellen
COM-Port eintreffenden Daten in einen Buffer eingelesen. Nun ist es so, dass nicht jede Mitteilung alleine ankommt, im Buffer des
COM-Ports können auch mehrere Mitteilungen abgelegt sein. Die Mitteilungen selbst sehen auch nicht immer gleich aus (die Länge variiert). Ich müsste nun einen Weg finden, die Mitteilungen im Buffer des
COM-Ports einzeln herauszufiltern und in einen eigenen Buffer zu legen.
Der InputString wird mit den Daten aus dem Buffer des
COM-Ports gefüllt:
Delphi-Quellcode:
procedure TIWServerController.ComPortRxChar(Sender: TObject; Count: Integer);
var
InputString: String;
StartPos, EndPos: Integer;
begin
ComPort.ReadStr(InputString, Count); <- hier wird eingelesen
Der InputString kann z.B. folgendermassen aussehen...
InputString 'T0000000127070'#$D'T0280000284664121850BE01C7'#$D 'T0000000127272'#$D'T0000000127070'#$D'T0000000127 272'#$D
...oder aber so...
InputString 'T0280000284664121850BE01C7'#$D
Nun ist mir nicht ganz klar wie die einzelnen Mitteilungen aus dem String extrahiert werden können, ob man dazu ausschliesslich mit Pos und PosEx arbeiten kann, oder ob es einen einfachen Weg gibt den ich nicht sehe.
Grüsse
hirnstroem