Deshalb die Checksumme...Wenn ein Wert verloren geht verschieben sich alle (zumindest in dem "Durchlauf").
Wie wärs denn so:
!Wert1Wert2Wert3#CRC
! markiert also den Anfang eines Pakets, und # z.B. das Ende der Daten bzw. den Anfang der Checksumme. Der Empfänger berechnet dann aus den Daten (also allem was zwischen ! und # steht) erstmal selbst eine Checksumme und vergleicht sie mit der die er empfangen hat. Sind beide unterschiedlich muss das Paket eben verworfen werden, denn dann ist bei der Übertragung irgendwas schief gelaufen.
Für CRC gibt es auch für Bascom sicherlich schon fertige Routinen, aber selbst falls nicht lässt sich der Algorithmus relativ leicht programmieren.
Du kannst die Werte natürlich auch mit Kommas oder sonst irgendwelchen Zeichen getrennt abschicken, oder du schickst alle einzeln mit unterschiedlichen Startcodes (vielleicht ganz einfach mit !1, !2, !3 oder sonstwie, Hauptsache man kann sie voneinander unterscheiden)
kurz gesagt:
es gibt beliebig viele Möglichkeiten um Daten per RS232 zu verschicken, also nimm die die dir am besten gefällt. Wenn es sicher sein muss, bau entsprechende Überprüfungen ein, oder nutze Redundanz (du könntest z.B. auch jeden Wert einfach doppelt innerhalb eines Pakets übertragen, wenn beide gleich sind ist vermutlich alles ok).
Wie Christopher bereits erwähnt hat muss eine Klartext-Übertragung keineswegs "unprofessionell" sein, es kommt halt immer darauf an welche Anforderungen man hat. HTTP z.B. ist ein hervorragendes Beispiel, denn bei diesem uns allen bekannten Protokoll werden die Daten tatsächlich alle im Klartext übertragen, also was in einer HTML-Datei steht, schickt der Webserver direkt so wie es ist an deinen Browser. Genau das gleiche ist bei SMTP der Fall, man kann Mails völlig ohne Mailprogramm verschicken, denn die Kommunikation mit einem SMTP-Server ist geradezu primitiv einfach.
Lesezeichen