Stringlänge übertragen

OP #3597609
Lesenswert?

Hallo Leute,

ich hab da mal eine Frage. Ich denke die Lösung ist sehr einfach, aber 
ich stehe gerade irgendwie auf dem Schlauch :-(

Ich übertrage vom Computer über eine serielle Schnittstelle einen String 
an einen Mikrocontroller. Dabei sende ich zunächst die Länge des Strings 
und dann den String. Die Übertragung funktioniert soweit auch, nur 
empfange ich als Länge leider immer den Dezimalwert.

Sende ich also ein Zeichen, so wartet die Funtkion auf 49. Wie wandle 
ich das wieder um in den entsprechenden ASCII-Wert, sodass meine 
Funktion das richtig verarbeiten kann?
Gast #3598406
Lesenswert?

Hi
So ganz schlau bin ich aus deiner Frage nicht geworden. Du empfängst 
das, was du sendest. Wenn du die Länge dezimal abschickst, kommt sie 
auch so an. Der Übertragung ist das völlig Banane, ob du Strings oder 
Werte verschickst. Du solltest dir ein Protokoll schreiben. 1. Zeichen: 
Länge Dezimal, dann entsprechend viele ASCII, danach vielleicht noch ein 
Prüfbyte. Damit bist du in der Lage, Strings mit variabler Länge zu 
versenden. Die Länge in ASCII zu wandeln,macht nicht viel Sinn, wenn du 
mit variablen Längen arbeitest und bei festen Längen brauchst du keine 
Angabe über Länge des String. Deine Empfangsroutine muss also das erste 
Byte entsprechend als Längenwert deuten und dann die empfangenen Daten 
in den Empfangspuffer schreiben.
Gruß oldmax
Gast #3598533
Lesenswert?

Es gibt auch Ansaetze, Zahlen nach ASCII Hex zu wandeln, dann wird jedes 
Datenbyte als zwei ASCII character uebertragen. Wenn man nicht mit einem 
Terminal zuschauen will und fliessend Hex umwandeln kann, wuerd ich 
Binaer empfehlen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren