Pipes and Filters. Über Pipes and Filters synchronisierst du deinen Datenfluss. Jeder Filter läuft in einem eigenen Thread. Der erste Filter sitzt an der seriellen Schnittstelle, nimmt einfach die Bytes entgegen und schiebt sie in seine Ausgabe-Pipe.
Der zweite Filter arbeitet als State-Machine, nimmt die Bytes und Packt sie in die zu erstellende Entity. Immer wenn eine Entity fertig ist, schiebt er sie wieder über seine Ausgabe-Pipe raus.
Das Längen-Byte würde ich rausnehmen, die Länge kriegst du sicherer über das Byte-Array selbst.
Es gibt hunderttausend Möglichkeiten, das Kontrollbyte zu errechnen. Eine Möglichkeit wäre, einfach alle Bytes per XOR zu verknüpfen. Aufwändiger, aber sicherer ist eine Huffman Codierung. Da geht dir aber Bandbreite verloren. Vorteil ist eine sehr viel höherer Fehlererkennungsfähigkeit und sogar die Möglichkeit, Fehler zu korrigieren.
Lesezeichen