Hallo,
hab mal in meiner Bastelkiste gewühlt , und ein Beipiel gefunden mit dem ich mal "geübt" habe verschiedene Datentypen aus einer C-Zeichenkette auszulesen. Sollte eigendlich so laufen.
Heinz
char daten[50] = "1;09:30:12;100;200;300;2.55;-1.123";
int devAdress = 0;
char zeit[20];
int iwert1, iwert2, iwert3;
float fwert1, fwert2;
void setup() {
Serial.begin(9600);
Serial.println(daten);
CStringToWert(daten);
Serial.print("Device Adresse\t"); Serial.println(devAdress);
Serial.print("Zeit \t"); Serial.println(zeit);
Serial.print("Integer 1\t"); Serial.println(iwert1);
Serial.print("Integer 2\t"); Serial.println(iwert2);
Serial.print("Integer 3\t"); Serial.println(iwert3);
Serial.print("Float 1 \t"); Serial.println(fwert1);
Serial.print("Float 2 \t"); Serial.println(fwert2);
}
void loop() {
// put your main code here, to run repeatedly:
}
void CStringToWert(char *instr) {
// füllt daten aus einem C-String in Daten
devAdress = atoi(strtok(instr, ";"));
if (devAdress == 1) {
strcpy(zeit, strtok(NULL, ";"));
iwert1 = atoi(strtok(NULL, ";"));
iwert2 = atoi(strtok(NULL, ";"));
iwert3 = atoi(strtok(NULL, ";"));
fwert1 = atof(strtok(NULL, ";"));
fwert2 = atof(strtok(NULL, ";"));
}
}