HI,
danke an alle Vorschläge.
Ich hab mir das von michael_x mal genauer angeschaut.
So auf Anhieb krieg ichs nicht hin:
Ein paar Sachen hab ich mal ergänzt, damit man es kompilieren kann:
//char datastring = "$33,22,11,4,5,6,,,,00,,,,,18,,,\r"; ---> geändert
char datastring[] = "$33,22,11,4,5,6,,,,00,,,,,18,,,\r";
char *p = datastring + 1; // nach dem '
Wenn ich es laufen lasse, dann gibt das Terminal folgendes aus:
erster Durchlauf:
22
11
4
5
6
0
0
zweiter Durchlauf:
$22
11
4
5
6
0
0
Das sieht so weit gut aus. Nur die erste Zahl fehlt mir immer. Und ich schlepp aus dem alten Lauf was mit.
Das finde ich schon noch raus.
Aber ich verstehe nur eine Zeile nicht so ganz:
char *p = datastring + 1; // nach dem '$'
Was ist jetzt "p"? Ist das der Pointer auf das Zeichen im Datastring, oder ist es das Zeichen selber?? Da fehlts mir etwas an "C-Kenntnissen"
gruß/hk007
int val=0; // temp variable
int dataArray[20];
int i = 0; // Index auf dataArray
while ( *p != '\r' && *p != 0)
{
if (*p == ',') // Zahl fertig
{
dataArray[i++] = val;
val = 0;
}
else if ( *p >= '0' && p <= '9' )
val = val10 + *p - '0'; // einfachste ascii -> int Wandlung
p++; ---------------------> eingefügt
}
dataArray[i] = val; // den letzten Wert nicht vergessen
Serial.println (dataArray[1]);
Serial.println (dataArray[2]);
Serial.println (dataArray[3]);
Serial.println (dataArray[4]);
Serial.println (dataArray[5]);
Serial.println (dataArray[6]);
Serial.println (dataArray[7]);
Wenn ich es laufen lasse, dann gibt das Terminal folgendes aus:
§DISCOURSE_HOISTED_CODE_1§
Das sieht so weit gut aus. Nur die erste Zahl fehlt mir immer. Und ich schlepp aus dem alten Lauf was mit.
Das finde ich schon noch raus.
Aber ich verstehe nur eine Zeile nicht so ganz:
char *p = datastring + 1; // nach dem '$'
Was ist jetzt "p"? Ist das der Pointer auf das Zeichen im Datastring, oder ist es das Zeichen selber?? Da fehlts mir etwas an "C-Kenntnissen"
gruß/hk007