Hallo, ich suche für eigene (private) Zwecke einen einfachen seriellen Telegrammrahmen (CMD-Byte, Datenbyte, Chesumme, Timing etc.). Bevor ich mir nun etwas selber definiere wollte ich mal nachhören, ob es evtl. bereits etwas "sinnvolles" mit wenig Overhead und guter Übertragungsqualität/-quantität gibt. Warum das Rad nochmal erfinden ?
gast schrieb:
> Warum das Rad nochmal erfinden ?
weils eigentlich so einfach ist: Adressbyte, Record-Typ-Byte, n x
Datenbyte, 2 x Checksummmenbyte, CR.
Adresse ist nicht weiter zu erklären und wird nur gebraucht, wenn
mehrere Stationen angeschlossen sein können.
Record-Type ist i.d.R. Command vom Master und Status vom Slave. D.h. der
Master sendet ein Command und wartet auf die Antwort.
Datenbytes hängt natürlich vom Bedarf ab, bei geringer Datenrate kann
man die Länge immer gleich machen, oder die Länge hängt vom Record Typ
ab, oder man stellt noch ein Längenbyte voran.
Checksumme ist die hexadezimale Summe aller Bytes bis dahin (also MOD
0xFFFF), man könnte auch CRC16 nehmen, aber das ist eigentlich nicht
nötig.
Allerdings muss ich anmerken, dass ich früher so programmiert habe,
heute mache ich alles im Klartext, weil das das Testen ungemein
erleichtert. Das ändert aber nichts grundsätzliches, es werden eben 3
Ziffern für die Adresse geschickt, dann Komma, dann 3 Ziffern für Record
Typ, Komma, usw.
also 001,012, ist Record Typ 12 an Station 1.
Natürlich gibts 1000 andere Möglichkeiten, die werden hier ja noch
kommen.
Ich empfehle, erst mal eine Protokoll-Beschreibung auf Basis der Records
zu erstellen (was steht drin, was kann geantwortet werden) und dann erst
zu programmieren.
Gruss Reinhard
Wie wäre es mit S.N.A.P. (Scalable Node Addressing Protocol). Ein offenes Protokoll für allgemeine Zwecke ;-)
Naja, so trivial ist es nun auch nicht. Man kann z.B. mal darüber nachdenken, ob CRC nicht die falsche Lösung ist, wenn man durch nicht 100%ige Timings z.B. öfters mal Bitfehler erhält. Da kann man sich (wenn man nicht immer nochmal nachfragen/neusenden will oder kann) mal Fehlerkorrekturverfahren anschauen.
Ein professioneller Frame ist 10H 03 Datenbytes 10H 02 CRC Falls ein Datenbyte 10H vorkommt, wird eine weitere 10H eingefügt. Damit sind für alle Frames eindeutig Anfang und Ende definiert. Auch wenn ein Frame irgendwo getrennt wird (z.B. bei einer TCP-Verbindung) http://www.tecchannel.de/netzwerk/management/402421/netzwerk_grundlagen_teil_1/index5.html 10H = DLE 02 = STX 03 = ETX
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.