Hallo, Ich sende mit QT einen String über den Seriellen Anschluss an einen Mikrocontroller (Arduino). Der String kommt an, jedoch ist er in einem ASCI Format. Sprich Sende ich eine 0, kommt eine 48 an, 1 mit 49 etc.. Mein späterer String entspricht in etwa einer NMEA Codierung also bspw. $12,23,43* Wie decodiere ich den String nun am besten in einen character? Meine Idee war eine lookup table, aber eventuell geht es ja noch einfacher (?). Grüße Peter
Peter schrieb: > Mein späterer String entspricht in etwa einer NMEA Codierung also bspw. > $12,23,43* das ist doch auch ASCI - was willst du da noch umwandeln. '0' = 49 = 0x31 = 061 das ist alles das gleiche, nur eine andere Darstellung. Ist sind immer die gleichen 8 bit.
In praktisch jeder Programmiersprache gibt es Möglickeiten einen String (der eine Textrepräsentierung einer Zahl enthält) in dieselbe numerische Zahl zu konvertieren. In C gibt es zb die Funktion atoi. Die hat zwar ein Problem, aber wenn das ausgeschlossen werden kann, funktioniert sie nicht schlecht. Hast du also den String
1 | char txt[] = "123"; |
vorliegen, dann konvertiert
1 | int num; |
2 | num = atoi( txt ); |
den Text in die gleichwertige Zahl 123. num hat danach den Wert 123. Ein
1 | int num; |
2 | char txt[] = "123"; |
3 | |
4 | num = atoi( txt ); |
5 | printf( "%d\n", 2 * num ); |
würde also den Zahlenwert 246 ausgeben. Und so gibt es in jeder Programmiersprache entsprechende Konvertierfunktionen, die von Textrepräsentierung auf numerische Repräsentierung und umgekehrt umwandeln. Normalerweise lernt man diese Funktionen relativ früh in seiner Ausbildung kennen.
Peter schrieb: > Sprich Sende > ich eine 0, kommt eine 48 an Wie meinst du das? Eine ASCII 4 und eine ASCII 8, oder ein Byte mit dem dezimalen Wert 48?? Peter schrieb: > NMEA Codierung also bspw. > $12,23,43* Wie meinst du das? Soll aus ASCII '23' ein Byte mit dem dezimalen Wert 23 werden? Oder was sonst? Peter schrieb: > Wie decodiere ich den String nun am besten in einen character? garnicht, ein String besteht aus Charactern, in der Regel aus mehreren. Georg
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.