Pages: [1]   Go Down
Author Topic: Duda con lectura de datos en Fichero SD  (Read 664 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas a todos,

Tengo un problema con una determinada aplicación que estoy realizando.
Por situar un poco la aplicación, cuando se pulsa un botón conectado a una determinada entrada digital, abro un fichero en la SD y comienzo la adquisición y guardado de datos que provienen de un sensor. La longitud de esta adquisición, depende del ensayo en cuestión.
El problema que encuentro es en la siguiente parte del código, con otra pulsación conectada a otra entrada digital, debo abrir el último fichero guardado y leer los datos adquiridos por el sensor, para realizar un determinado cálculo matemático con ellos. Los datos guardados están en enteros de la siguiente forma:

253;569;521
265;547;245
142;545;365
....

La idea que tengo es abrir el fichero y almacenar la primera columna de datos en un array x, la segunda en un array y y la tercera en un array z de la siguiente forma:
x = [253;265;142;....]; y =[569;547;545;....] y z=[521;245;365;...]

Estoy teniendo problemas con esta operación de almacenar en x, y y z los valores, el código que tengo implementado es el siguiente:
Defino las siguientes variables:
Code:
int i=0;
int x[]={};
int y[]={};
int z[]={};

Y dentro del loop cuando abro el fichero ....

Code:
File myFile = SD.open(nomfichero);
      if (myFile) {
        Serial.println(nomfichero);
        while (myFile.available()) {
          //Serial.write(myFile.read());
          int x = myFile.parseInt();
          int y = myFile.parseInt();
          int z = myFile.parseInt();
          x[i] = x;
          y[i] = y;
          z[i] = z;
          i=i+1;
    }// close the file:
          myFile.close();
          }
      } else {
  // if the file didn't open, print an error:
      Serial.println("error opening test.txt");
      }

El problema que tengo es en x, y y z se me escriben los mismos valores esto es :
x[1]=521;y[1]=521;z[1]=521
x[2]=245;y[1]=245;z[1]=245 .....

Puede alguien decirme por que ocurre esto?
Se puede mejorar o robustecer esta parte de código?
Agradecería cualquier ayuda al respecto...
Un saludo.
Logged

Palencia, Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 568
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Supongo que porque cierras el archivo. Entonces, cada vez que vuelves a abrirlo, lees el principio del fichero. Para leer los siguientes registros, debes realizar las lecturas sin cerrar el archivo, o bien calcular un índice que apunte al registro que te interesa leer.
Logged

Pages: [1]   Go Up
Jump to: