Wie schon geschrieben wurde hängt das vom Datenframeaufbau ab, den man verwenden will.
Nimmt man da ein USART Protokoll kann man pro Byte noch die Fehlerregister des USART auslesen, ob da ein Frame Error oder sonst was eingetroffen ist.
Auf die richtige Framelänge kann man auch prüfen, ich würde aber lieber ein fest definiertes Startzeichen verwenden, das sonst nirgend anderswo im Rahmen verwendet wird. Dadurch bleibt die Framelänge dann flexibel.
Ich nehm gerne für die Übertragung ASCII Code und benutze als Startzeichen das $ = Dollar oder das @ =ät.
Nutzt man am Ende eines Frames <CR> <LF> kann man so ein Protokoll sehr schön mit einem beliebigen Terminalprogramm debuggen, weil ja die Zeilenumbrüche auch mit drin sind.
Zusätzlich kriegt man schnell wieder einen Anfangs- und einen Endpunkt, falls mal ein Frame versaut wurde.
Die Checksumme mach ich gerne mit EXOR, weils schnell geht. Die ermittelte EXOR Checksumme übertrage ich als hex Zeichen, weil die dann immer gleich viele Stellen hat. Das macht zwar ein wenig mehr Aufwand beim Codieren und Dekodieren hat aber doch wieder Vorteile.
Du könntest Dich zum Beispiel an NMEA 183 orientieren. Ist zwar nicht das neueste, aber auch mit den Fähigkeiten eines Microcontrollers gut zu implementieren.
Lesezeichen