Hallo,
zuverlässig geht das garnicht. Deswegen wird RS232 für "ernsthafte" Datenübertragung auch nicht verwendet. Man kann aber versuchen, ein solches System zuverlässiger zu machen. Dazu gehört als erstes, Framingerrors zu erkennen und ernst zu nehmen. Hardware UARTs haben dafür ein Status Bit. Framing Error heißt, daß an der erwarteten Stelle kein Stopbit ist. Dann muß das bisher empfangene Byte verworfen werden. Auch Parity hilft, einen Synchronisationsfehler zu erkennen, wird aber nur noch selten verwendet.
Das wichtigste ist aber, das der Sender ab und an Pausen länger als ein Byte macht. Bei interaktiven Systemen wie einem Terminal stellt sich das von alleine ein, eine Seite sendet und wartet dann auf eine Antwort. User machen so was eigentlich automatisch, solage Return drücken bis ein Prompt erscheint. Bei autonomen Systemen gibt es aber immer wieder Schwierigkeiten. Es gibt dort keine Garantie, das der Empfänger nicht erst gestartet wird, während der Sender schon aktiv ist. Dewegen wird gerne zu einem Modem (was immer das heute auch ist, GSM z.B.) solage "AT" geschickt, bis ein "ok" zurück kommt. Erst dann werden ernsthafte Daten geschickt.
All das muß die Software erledigen. Bei anderen "Kurzstreckenprotokollen" wie I2C oder SPI erledigt das die Hardware selbst. Ein I2C Empfänger, der mitten in einer Übertragung gestartet wird, wartet auf ein "BUS IDLE", bevor er empfängt. SPI wartet, bis CS von inaktiv auf aktiv wechselt. Halbe Frames werden also garnicht empfangen. Ähnliche Mechanismen gibt es bei Ethernet, HDLC und den anderen Protokollen.
MfG Klebwax