Hi Leute! Ich möchte gerne Messwerte von meinem uC zum PC übertragen. Es handelt sich dabei um gemessene Spannungswerte, welche ich in einem VB-Programm anzeigen lassen will. Es geht mir jetzt nicht um die Realisierung des Ganzen, sondern um eine geeignete Codierung für die Daten, bzw. Codierung ist schon zuviel - ich meine eher das Format. Mal angenommen, ich messe am uC Spannungen zwischen 0 und 3V. Diese Spannung könnte ich dann in Millivolt als Integer direkt senden, also bestehend aus zwei Bytes und diese dann wieder zusammenbauen, oder halt als z.B. 1,342V in ASCII-Zeichen mit Komma, bzw. halt 1342 als ASCII-Zeichen. Darüber hinaus muss der Start der Nachricht erkennbar sein, also z.B. ein U (für Spannung), dann die Zahl, dann ein E (für Ende) oder ähnliches. Vielleicht noch die Anzahl der übertragenen Bytes mitschicken? Mich würden mal einfach eure Verfahrensweisen interessieren - was hat sich bei euch bewährt? Danke und Grüße
Eindeutig Klartext. Mit \n (Zeilenvorschub, CR, CRLF) als Trennzeichen zwischen einzelnen Werten. Oder, wenn es mehrere zusammenhängende Werte sind, Semikolon oder \t als Trennzeichen zwischen diesen Werten, und \n für jeweils einen Wertesatz. So etwas lässt sich recht einfach per Software auseinandernehmen, kann aber auch mehr oder weniger direkt als Datei abgespeichert in Programme wie Excel übernommen werden, und ist auch in einem Terminalprogramm (nein, "hterm" ist kein Terminalprogramm!) lesbar.
Das kommt auf die Umstände an. Binäre Übertragung kann oft kompakter ausfallen, man kommt also auf höhere Übertragungsraten. Wenn das nicht kritisch ist, fährt man mit ASCII-Strings meist besser. Insbesondere die Fehlersuche ist dann einfacher. In jedem Fall braucht man aber Sicherungsmechanismen, z.B. um gekippte Bits zu erkennen oder einen Start des Lesens nach einem bereits begonnenen Paket (auch bei binärer Übertragung, z.B. könntest du ja versehentlich erst ab dem zweiten Byte eines Pakets lesen und baust dann die falschen Paare zusammen), und Plausibiltätstests (hängt überhaupt der erwartete Sender dran, stimmen Übertragungsparameter?).
Hallo Horst2000, anfänglich habe ich meine Messwerte immer möglich "platzsparend" im Datenstrom zum PC gesendet, bedeutet als char oder int oder was auch immer. Funktioniert auch super, solange man diszipliniert arbeitet und alles auf anhieb funktioniert. Aber nachdem ich mal in meinem größeren Funknetzwerk einen Fehler in der Übertragung suchen musste, habe ich mittlerweile auf klartextübertragung mittels String umgestellt. Macht zwar die Datenübertragung etwas länger, aber spart Zeit beim debuggen. Du kannst nämlich den String mal eben an der seriellen Schnittstelle ausgeben und mit Hyperterm eben schnell mal mitlesen. Gruß aus Köln Frank
OK, das ist plausibel. Dann werde ich auf Klartext bauen. Danke euch!
Ich kann meinen Vorrednern nur beipflichten: Wenn es möglich ist, dann Klartext. Ist viel einfacher zu Debuggen. Du könntest auch immer noch einen Identifier mitschicken, dann weißt Du, um was für einen Wert es sich handelt. Z.B. 01AA:1,342\n -> Der Parameter mit der Nummer 0x01AA enthält den Wert 1,342.
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.