Dafür gibt es jetzt verschiedene Ansätze, die von deiner Verarbeitung und den Wiederholungsintervallen abhängen.
Z.B. könntest du zum Start einer jeden Sendung, sagen wir mal, 3 gleiche Bytes voranstellen. Wenn die vorbei sind kommt dein relevanter Datensatz.
Oder du nutzt die Delayzeit die du für das Aktivieren einer Sendung mit deiner Schleife ja sowieso erzeugst zur Erkennung.

WriteUSART(x1);
WriteUSART(x2);
for (i=0;i<100000;i++);

Nach deinen Aussagen sollte er sich ja dann zum Puffer leeren genötigt fühlen. Und zwischen den zwei Bytes ist die Lücke relativ klein. Wenn das zweite Byte nicht in einer angemessenen Zeit kommt, kannst du das erste auch wieder verwerfen und fängst von vorn an.

sast