Go Down

Topic: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) [RISOLTO] (Read 3845 times) previous topic - next topic

remino

Penso sia tutto un fattore di inizializzazione.

Stasera riprovo il tuo esempio, usando le tue init ecc...

P.S. la mia SD Card è una da 8 GB l'ho partizionata in 2 da 4Gb, cattiva idea ?

Saluti e buon pomeriggio

Remo

remino

Ok, Final result :

Sono riuscito a scoprire l'inghippo :-)

Durante la scrittura su SD, mettevo il File.print("\n") alla fine della sequenza, questo mi provocava una riga vuota.
Purtroppo me ne son potuto accorgere solo usando un textEditor non classico (uso MAc).

Ecco il Result utilizzando l'esempio di Pablos che ringrazio.
Code: [Select]
inizializzazione SD completata.
scrivo valori...done.
inizializzazione SD completata.
scrivo valori...done.
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
ultima linea 12345,12331,43221,52523,32411,46222,262322,25222,124442
1
12345
12331
43221
52523
32411
46222
262322
25222
124442


Ora cerchero di implementare il tutto nel mio di sketch.

Grazie ancora e buona serata.

Remo

remino

Ciao a tutti,
problema risolto, i miei 2 Xbee comunicano beati, e dopo un reset tutto continua come se non fosse successo niente.
Un grazie a tutti coloro che mi hanno consigliato.
Buona serata a tutti
Remo

P.S. se qualcuno fosse cosi gentile ed indicarmi come si fa a settar equesto topic come risolto...


leo72



P.S. se qualcuno fosse cosi gentile ed indicarmi come si fa a settar equesto topic come risolto...



Edita il primo messaggio della discussione e cambia il titolo di quello.

frank984

Riprendo questa deiscussione perchè ho un problema analogo.
I miei dati salvati sono nella forma:

Code: [Select]
Year, Month, Day, Hour, Minute, Second, 100*Hum%, 100*Temp*C, Heat, Cool, Dehum
2015,5,12,11,4,15,4520,2750,0,221,0
2015,5,12,11,4,16,4520,2750,0,221,0
2015,5,12,11,4,17,4610,2760,0,221,0
2015,5,12,11,4,19,4610,2760,0,221,0


la prima riga spiega cosa sono i valori salvati su sd ogni tot sec. I valori sono tutti int. (in effetti temp ed umidità sono stati moltiplicati per 100 per questo).

Ho messo in void loop la funzione leggi_SD();
Chiuso il void loop, ho esplicitato la funzione leggi_SD(), riprendendola da questa discussione:

Code: [Select]
void leggi_SD(){
 String ReadLine;
 char charBuf[50];
 
 if(file.open(&root, "data.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  this is last line
 ReadLine.toCharArray(charBuf, 50); // array of char starting from the single characters
 estrai_valori(charBuf);//go to "estrai_valori" function
}

void estrai_valori(char *charBuffer){
 unsigned long temp[]= {0,0,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]);Serial.println(temp[9]);
Serial.println(temp[10]);
file.close();
}



In realtà non riesce a prendere l'ultima riga e da lì ovviamente mi da tutti gli 0 incolonnati:

Code: [Select]
Year, Month, Day, Hour, Minute, Second, 100*Hum%, 100*Temp*C, Heat, Cool, Deum
2015,5,12,11,4,15,4520,2750,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,16,4520,2750,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,17,4610,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,19,4610,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,20,4560,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,22,4560,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,23,4510,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,24,4510,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,26,4470,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,27,4470,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,28,4460,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,30,4460,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,31,4510,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,33,4510,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,34,4540,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0
2015,5,12,11,4,35,4540,2760,0,221,0
ultima linea
0
0
0
0
0
0
0
0
0
0
0


Sapete dirmi dov'è l'errore?



Go Up