io intendevo qualcosa di meno laborioso, ma forse non molto più semplice
allora ipotizziamo che i tuoi record nel file sia fatto così, ci sono dei numeri che superano il 65*** quindi l' int non basta più ci vuole il long
18,4,2013,13,25,37,1456,123466,113465
19,4,2013,14,25,37,1466,123476,113475
20,4,2013,15,25,37,1476,123486,113485
21,4,2013,16,25,37,1486,123496,113495
22,4,2013,17,25,37,1496,123506,113505
quindi hai 9 valori per linea
imposti tutte le tue cose nel setup
void setup() {
...
...
dichiari qui i pin e quello che ti serve
...
...
leggi_SD(); //vai alla funzione leggi l'ultima riga da sd
}
Funzione che legge il file tenendoci l'ultima linea del file come buona
void leggi_SD(){
String ReadLine;
char charBuf[50];
if(file.open(&root, "miofile.txt", O_READ)) {
int16_t c;
while ((c = file.read())>0){
ReadLine += (char)c;
if((char)c=='\n') {
#if DEBUG_RIGHE_FILE
Serial.print(ReadLine);//debug
#endif
if(c > 0) ReadLine="";
}
}
}
Serial.print("ultima linea ");//debug
Serial.println(ReadLine);//debug //questa è l'ultima linea
ReadLine.toCharArray(charBuf, 50); //metto i singoli caratteri in un array di char
estrai_valori(charBuf);//vai alla funzione estrai dati
}
Adesso che abbiamo l'ultima linea andiamo ad estrarre i 9 valori usando la "," come separatore
void estrai_valori(char *charBuffer){
unsigned long temp[]= {0,0,0,0,0,0,0,0,0};
char *p = charBuffer;
byte i = 0;
while (*p != '\0')
{
if (*p == ',') { ++i; ++p; continue;}
if (isdigit(*p))
{
temp[i] *= 10;
temp[i] += (*p - '0');
}
++p;
}
Serial.println(temp[0]);Serial.println(temp[1]);Serial.println(temp[2]);Serial.println(temp[3]);Serial.println(temp[4]);
Serial.println(temp[5]);Serial.println(temp[6]);Serial.println(temp[7]);Serial.println(temp[8]);
}
void loop() { }
questa è l'output sul serial .... i tuoi valori ora sono dentro l'array temp[n] in formato long
ultima linea 22,4,2013,17,25,37,1496,123506,113505
22
4
2013
17
25
37
1496
123506
113505
ciao