Hallo, ich stehe vor dem Problem, eine serielle Übertragung (hier: Funk) irgendwie auswerten zu müssen. Wie macht man sowas am besten? Meine Überlegung: -Startmarkierung -|Ziel-ID| -|Sender-ID| -|Nutzdaten| -|Checksumme| -Endmarkierung Da sind aber noch viele Fragen offen: - Wenn ich z.B. "|" als Markierung für Start und Ende eines "Blocks" nehme, was passiert, wenn meine Nutzdaten ein "|" enthalten? - Wie programmiert man das? Ich hätte das jetzt mit Zuständen gemacht: Z0: nix Z1: Startmarkierung wurde empfangen Z1: ZielID empfangen ... Z6: Endmarkierung empfangen => auswerten In jedem Zustand würde ich das dann empfangene auf Gültigkeit prüfen (kommt das End-Zeichen nach x zeichen, oder was anderes? Sind es gültige Zeichen für eine ID?.....). Wenn nicht: Wieder nach Z0. Thorsten
Ja, mit einer State-Machine ist das schon sinnvoll gelöst. Vorallem wenn du keine fixe Länge eines Kommandos hast, oder noch Timeouts implementieren willst. Wenn du die Daten ASCII-Kodiert schickst, kannst du statt dem '|' ja auch andere Trennzeichen nehmen, der "Record Seperator" 0x1E bietet sich da an. Wenn du binär sendest, könntest du die Trennzeichen einsparen, und entweder mit fixen längen arbeiten (Sender/Empfänger ID) oder vor dem Block die Länge der nachfolgenden Daten schicken.
Hallo, Beitrag "Auswertung RS232-Befehle" Richtig, die Nutzdaten als ASCII (+ 0x30) senden, dann kannst du als Start STX und ETX nutzen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.