Forum: Mikrocontroller und Digitale Elektronik Übertragung von uC zum PC - wie Signal am besten formatieren?


von Horst2000 (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

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?).

von Frank aus Köln (Gast)


Lesenswert?

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

von Horst2000 (Gast)


Lesenswert?

OK, das ist plausibel. Dann werde ich auf Klartext bauen. Danke euch!

von Dosmo (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.