So oder so ähnlich müsste es eigentlich...
while (1) {
if (Serial.available()) {
char c = Serial.read();
if (c == '\0' || c == '\r' || c == '\n') { // Wenn die Textzeile durch ist...
Serial.print(data[0]);
Serial.print(", ");
Serial.print(data[1]);
Serial.print(", ");
Serial.print(data[2]);
Serial.print(", ");
Serial.println(data[3]);
break; // Fertig, while() beenden!
} else if (c != ',') { // Normalfall
// Aktuelles Zeichen ans Ende des Puffers hinzufuegen und Pufferposition hochzaehlen
buffer[bufferPos++] = c;
} else { // Sonderfall: Das aktuelle Zeichen ist ein Komma
// Komma durch '\0' ersetzen, markiert fuer die strtoul()-Funktion das Ende der Zahl
buffer[bufferPos++] = '\0';
// Nur bei bestimmten Kommas reagieren!
if (commaCount==2 || commaCount==3) {
buffer[bufferPos-2] = '\0'; // bei beiden Zahlen die hintere '0' wegschneiden
// Teil des uebergebenen Textes in vorzeichenlose Zahl umwandeln
data[dataPos++] = strtoul(buffer, NULL, 10);
} else if (commaCount == 5) {
buffer[bufferPos-12] = '\0'; // 4. Zahl rausschneiden
data[dataPos+1] = strtoul(buffer+6, NULL, 10);
buffer[bufferPos-19] = '\0'; // 3. Zahl rausschneiden, REIHENFOLGE NICHT UMDREHEN!
data[dataPos] = strtoul(buffer, NULL, 10);
}
commaCount++;
bufferPos = 0; // Puffer zuruecksetzen
}
}
}
Ungetestet, daher ohne Gewähr! ![]()