Was mache ich egt, wenn ich als Datum eine 0 senden will und evt der Empfänger aus dem Takt gekommen ist
Im Stream sieht ja eine Übertagung so aus:
0x00 0x01 0xYY 0x00 0x02 0xZZ 0x00 0x01 0xYY 0x00 0x01 0xYY
Da du ein Datenpaket erst aus dem Übergang 0->Nicht 0 erkennt, ist die Folge 0x00 0x00 0x01 erst mit dem Übergang vom 2 auf das 3 Byte als neues Datenpaket zu erkennen.
Du musst aber beachten, dass dein Datum noch nicht/falsch übernommen wurde und du daher das Datum kontinuierlich senden solltest, dafür ist das Protokoll ausgelegt.
Um das ganze nochmal theoretischer zu behandeln:
Du hast eine FSM mit 3 Zuständen: wait, type, data.
Im default oder reset fall gehst du zu wait, im Fehlerfall auch.
von wait geht es nur zu type, wenn es die Kombination 0 und Nicht-0-Byte kommt. Das Nicht-0-Byte wird dann im type-Zustand ausgewertet und dann zu data gesprungen. In data übernimmst du das nächste Byte und springst zurück auf wait.
Sollte in type ein unbekannter Typ sein, ist es ein Fehlerfall.