Einzelnen Beitrag anzeigen

OlliWW

Registriert seit: 31. Aug 2011
153 Beiträge
 
#1

Indy TCP Client empfangen mit Prefix / Suffix

  Alt 9. Aug 2021, 14:51
Hallo,

Ich implementiere gerade eine TCP Kommunikation mit bestimmten Netzwerkgeräten.

Zu den Geräten schicke ich ein Kommando und empfange eine Antwort.

Ein Kommando besteht aus:
STX (Steuerzeichen) + Kommando + ETX

Die Antwort besteht aus:
STX + Antwort + ETX

Bisher habe ich bei serieller Kommunikation bei der COM Port Komponente ein einfaches "OnReceive" Event gehabt. Vorher ist es möglich ein Datensatz-ENDE Zeichen zu deklarieren (in dem Fall ETX). Jedes Mal wenn die serielle Schnittstelle einen Datensatz + ETX sendet, wird das Event getriggert und ich kann darauf reagieren.

Gibt es in der Indy Sammlung etwas ähnliches?

Den einzigen Weg den ich bisher gefunden habe ist, einen Thread zu schreiben, der einen IdTCPClient nutzt und der dauerhaft ein IOHandler.ReadLn(#$3) ausführt und entsprechend per Synchronize die empfangenen Daten zurück gibt. Hier greife ich mit Threadding etc. schon ziemlich tief ins System ein und da ich eine sehr stabile Lösung brauche, habe ich mich gefragt, ob es nicht schon etwas vorgefertigtes in diese Richtung gibt.

Ich habe mit den IdTCPCmdClient angesehen, dieser macht aber statisch ein ReadLn mit einem LF - was mir leider nicht hilft.
  Mit Zitat antworten Zitat