Bei seriellen Protokollen macht man das normalerweise mit sog.
Escapezeichen.
Beispiel: Du hast drei Kommandobytes mit den Werten 0,1,2.
Die schickst Du auch genau so. Wenn Du jetzt Datenbytes mit denselben
Werten senden willst, stellst Du diesen ein Escapezeichen voran (dessen
Bytewert Du halt vorher festlegen musst. Im ASCII-Zeichensatz ist das
z.B. Wert 27).
Anstatt 1 schickst Du jetzt also 27, und dann 1.
Wenn Du den Datenwert 27 senden willst, schickst Du 27 zweimal.
Empfängerseitig: Immer wenn der Empfänger ein Escapezeichen bekommt
(hier Wert 27), dann interpretiert er das nächste Byte als Datenbyte.
Theoretisch könntest Du jedem Datenbyte immer eine 27 voranstellen, was
natürlich Blödsinn ist. Immer nur Datenbytes, deren Wert einem
Kommandowert entsprechen, und dem Escapezeichen selber.
Wenn in Deinem Datenstrom viele Datenwerte mit Kommandowerten
vorkommen, sinkt natürlich Deine Datenrate entsprechend.