Forum: Compiler & IDEs benötige Hilfe bei Auswertung eines Strings


von Tobias (Gast)


Lesenswert?

Hallo erstmal,

ich bin gerade dabei ein Handy über ein Atmega16 anzusprechen um damit 
ausgelöst durch 8 Eingänge diverse SMS zu verschicken.
Das Handy ist ein altes Siemens S55. Da ich das Handy nicht ständig 
laden möchte, wollte ich es abhängig vom Ladezustand des Akkus aufladen.
Die Abfrage erfolgt über "at+cbc\cr" worauf das Handy mit "\cr\lf+cbc: 
0,100\cr\lf\cr\lfOK\cr\lf" antwortet. Warum das Handy ständig die 
Steuerzeichen zwischenschiebt ist mir bisher auch ein Rätsel aber nicht 
weiter wichtig. Viel wichtiger, wie bekomme ich aus dem Antwort-String 
die Zahl nach dem Komma, also hier die 100 in eine uint8_t Variable rein 
damit ich diese auswerten kann?
Ziel ist es das Handy ab 20 Prozent aufladen zu lassen.

2. Frage die sich mir gerade stellt, das Handyladegerät gibt 5V mit max. 
620mA aus. Kann ich da also dann mit den 5V mit denen der Controller 
betrieben wird (erzeugt über 7805A), abgesichert mit 500mA und vom 
Controller geschalten über z.B. ein Relais, direkt auf das Handy drauf 
oder regelt das Handy irgendwie das Ladegerät?

Danke für eure Hilfe

von DirkB (Gast)


Lesenswert?

Wenn dein Antwortstring lautet: "\r\n+cbc:0,100\r\n\r\nOK\r\n"
1
Ladezustand=atoi(strchr(Antwortstring,',')+1);
Es sollte aber auf alle Fälle ein , im String sein.

von Tobias (Gast)


Lesenswert?

Super danke, werd ich morgen gleich mal ausprobieren.
ja, das "," ist immer da.
Verstehe ich das dann richtig, strchr sucht im String beginnend von 
links( niedrigster Array-Wert) nach "," und gibt als Wert die Position 
des Zeichens zurück. Dieser wird um 1 erhöht um an der nächsten Position 
den nachfolgenden String mit atoi in ein Integer umzuwandeln. Die 
Umwandlung bricht ab dem Zeichen ab das als Zahl keinen Sinn mehr 
ergibt, also beim nächsten "\cr".

Gruß und Danke

von DirkB (Gast)


Lesenswert?

Genau.
Wenn strchr das Zeichen nicht findet, gibt es NULL zurück.
Das Array muss mit '\0' abgeschlossen sein.

Ein paar Feinheiten noch:

"," ist etwas anderes als ','
und \cr wird in C (und ein paar anderen Programmiersprachen) als \r 
geschrieben. \n ist newline.

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.