// Simula il contenuto del file (n.b. lo spazio non comporta alcun problema)
char testData[] = {
"1,2,3,999\n"
" 2, 10, 3, 156\n"
"3, 7, 53,896\n"
};
// Array che andrà a contenere i valori interi ricavati riga per riga
#define ARRAY_SIZE 4
int intValues[ARRAY_SIZE];
// Funzione che passata una string di valori separati da una virgola,
// coverte il testo in interi e salva i valori nell'array
void tokenizer(const char* str) {
int cnt = 0;
char * pch;
pch = strtok (str, ",");
while (pch != NULL) {
uint16_t val = atoi(pch);
if (cnt < ARRAY_SIZE)
intValues[cnt++] = val;
pch = strtok (NULL, ",");
}
}
void setup() {
Serial.begin(9600);
Serial.println("START");
char buffer[20];
int pos = 0;
// Scorriamo tutti i caratteri del teso di prova, fino a trovare il ritorno a capo
// che indica la fine di una riga e quindi passiamo la c-string alla funzione tokenizer
// Con un file sarebbe più o meno la stessa cosa, ma basta fare tipo:
// while(file.available()) {
// char ch = file.read();
// if (ch != '\n')
// etc etc
for (int i=0; i<strlen(testData); i++) {
if(testData[i] != '\n') {
buffer[pos++] = testData[i];
}
// Fine riga raggiunto
else {
buffer[pos] = '\0'; // Carattere di terminazione stringa
pos = 0; // Pronto per la prossima riga
Serial.println (buffer);
// Conversione riga-n da testo ad interi
tokenizer(buffer);
// Stampa dell'array giusto per vedere se tutto è andato come previsto
for(int i=0; i<ARRAY_SIZE; i++) {
Serial.print("Indice: ");
Serial.print(i);
Serial.print("; Valore: ");
Serial.println(intValues[i]);
}
}
}
}
void loop() {
// put your main code here, to run repeatedly:
}