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.