benötige Hilfe bei Auswertung eines Strings

Gast #2145502
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
Gast #2145626
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
Gast #2145643
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.

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