Hi zusammen,

wie der Titel schon verrät habe ich ein logisches Problem beim einlesen eines Telegrammes variabler Länge. Das Telegramm läuft über eine RS485-Verbindung.

Aktuell ist es so, das ich ein Telegramm mit fixer Länge verwende. Da ich weiß wie lang das Telegramm sein muss, warte ich ab bis die notwendige Anzahl an Bytes im Eingangspuffer stehen und werte die Bytes bzw. das gesamte Telegramm dann auf einmal aus.
Ich prüfe dann ob das Telegramm für diesen Teilnehmer ist, ob die Prüfsumme passt usw. usw..
Ist es nicht für mich oder stimmt irgendwas nicht, wird es einfach verworfen.

Wie mache ich das jetzt aber, wenn ich eine variable Länge habe? Ich weiß ja nicht auf wieviele Bytes ich warten muss bis das Telegramm vollständig empfangen wurde? Lese ich zunächst nur den Telegrammkopf ein und werte diesen aus? Von dem weiß ich ja die Fixlänge. Brauche ich da dann eine eigene Prüfsumme für den Telegrammkopf? Wenn ich in dem Kopf dann schon sehe das es nicht für mich ist, dann muss ich trotzdem die Nutzdaten abwarten und verwerfen?

Aktuell soll das Telegramm so aussehen: (jeweils 1 Byte)

Zieladresse / Quelladresse / Länge der Nutzdaten / Registerzugriff / ( hier kommen jetzt die variablen Nutzdaten) / Prüfsumme

Bisher war es auch so, das ich den Telegrammkopf und die Nutzdaten in die Prüfsumme habe mit einfließen lassen. Geht das dann auch noch oder macht es keinen Sinn?

Ich hoffe Ihr könnt mir weiterhelfen. Ich stehe gerade ein wenig auf dem Schlauch.