Ich habe ein Gerät, dass mir eine Liste von Zahlen schickt. Zuerst kommt die Anzahl der zu empfangenen Zeichen, Trennzeichen ist 0x20, komma=2E und die Zahlen sind ASCII-kodiert. Abgeschlossen wird mit einem Nullbyte. Also z.B. 2, 20, 32,35,39,2E,35, 20, 32, 0 entspricht 259,5 und 2. Ich suche nach einer effizienten Möglichkeit, diese Zeichenkette mit einem AVR zu dekodieren. Die nachkommastellen kann ich entweder ignorieren oder (besser) runden. die üblichen Stringfunktionen helfen leider nicht weiter, da die Zeichen linksbündig übertragen werden. Hat jemand einen Tipp für mich?
sscanf()? oder erst zerhacken mit einer eigenen zerhackfunktion und dann mit atoi()? mfg mf
Tja - also irgendwie wirste wohl selbst einen Parser für solche Strings bauen müssen, der Dir den String auseinandernimmt. - Komma suchen - dann die einzelnen Bytes nach links bis zum Trennzeichen extrahieren, -30 nehmen, und mit der jeweiligen Wertigkeit (10^0, 10^1, ...) multiplizieren, und dann zusammenzählen. - Genau so auch mit den Werten nach dem Komma, oder eben ignorieren, oder, wenn man runden will, entsprechend dem Wert in Digit 10^-1 dies tun mit dem ganzzahligen Teil. Eine fertige Funktion wird es wohl (nach meinem Gefühl) für solch spezifische Stringformate nicht geben.
Thomas schrieb: > Hat jemand einen Tipp für mich? Solange Char = Zahl Wert * 10 (linksschieben im Zehnersystem) Wert + Einzelwert des Chars Zu Solange Dann falls Komma Wert + 1 falls Zahl > 4 Rest bis zum Trennzeichen ignorieren So würd ich ungefähr ansetzen.:-)
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.