Hallo,
ich bräuchte mal ein wenig oder auch mehr Hilfe mit meinem
Indy Client.
Das Senden funktioniert prima.
ich habe ein Problem beim Datenempfang.
Schicke ich ein einzelnes Kommando mit einem Button, dann bekomme ich eine Antwort. Siehe Bild Tracking Daten....(im Anhang).
Schickt dann das Gerät Daten, diese kommen schnell hintereinander, dann habe ich die gleiche Message mehrfach in meiner Datenbox stehen. Siehe 2. Bild.
Wie kann ich das verhindern?
Das empfangen läuft in einem eigenen Thread.
Delphi Version ist Berlin 10.1
Delphi-Quellcode:
procedure MSC_Client_Receive.Execute;
var
TBuffer: TiDBytes;
s :
String;
b : Byte;
a,i, i1, track : integer;
begin
if TStop
then begin
while not Terminated
do
begin
try
Main_Frm.msc_client.IOHandler.ReadBytes(BBuffer, -1, False);
a := 0;
a := Length(BBuffer);
i1 := 0;
s := '
';
for i := 1
to a
do begin
b := BBuffer[i1];
if b <> 3
then begin
if b = 2
then begin
i1 := i1 + 1;
end else begin
s := s + Chr(b);
i1 := i1 + 1;
end;
end;
if b = 3
then begin
sMsg := s;
if sMsg <> '
'
then begin
Synchronize(UpdateRecordbox);
Synchronize(Update_RDT_Parameter);
track := Pos('
sSN eCCTrackingData', sMsg);
if track > 0
then begin
Synchronize(UpdateTrackingData);
tracking_data_online.NewCreate(sMsg);
end;
end;
end;
end;
BBuffer :=
nil;
SetLength(BBuffer,0);
Main_Frm.msc_client.IOHandler.InputBuffer.Clear;
except
on e:
exception do
begin
end;
end;
end;
if not TStop
then begin
Terminate;
end;
end;
end;