Go Down

Topic: incremento de numero en nombre de archivo SD SOLUCIONADO (Read 886 times) previous topic - next topic

Lisergio

Oct 13, 2012, 11:45 am Last Edit: Oct 13, 2012, 01:02 pm by Lisergio Reason: 1
Buenas otra vez, esta vez mi problemilla es el siguiente...

Después de hacer ciertas medidas con los sensores de mi arduino, los voy a guardar en un archivo de una tarjeta SD, hasta aquí, todo perfecto, si quiero añadir datos al archivo generado tampoco hay problemas, pero lo que quiero hacer, es generar un archivo diferente para cada grupo de lecturas...simplemete añadiendo un numero al final del nombre... Lectura_1.txt, Lectura_2.txt.. etc

********************************


File myFile;
String nombrefichero = "Lectura_";
int i = 1;
int exist = LOW ;
 
  while (exist == LOW);
  {
    nombrefichero ="Lectura_";
    nombrefichero  = nombrefichero + String(i);
    nombrefichero = nombrefichero + (".txt");
    Serial.print("El nombre del archivo es : ");
    Serial.println(nombrefichero);

    if (SD.exists(nombrefichero))
    {
      i = i+1;
    }
    else
    {
      exist = HIGH;
    }
  }

myFile = SD.open(nombrefichero, FILE_WRITE);

....

....
**************************************

Pero me dice que no puede ....

error: no matching function for call to 'SDClass::exists(String&)

Si la cadena nombrefichero ya es texto, por que SD.exists no puede buscarla?

gracias .....


fm

El problema es que la función exists solo está definida para arrays de caracteres (char[]), mejor dicho, para punteros a char y no para objetos String.

Mira en los ficheros de cabecera de la librería y en la clase SDClass para ver el prototipo del método (función) para ver que parámetros acepta la función exists.

Fichero SD.h

Code: [Select]

  // Methods to determine if the requested file path exists.
  boolean exists(char *filepath);
   

Lisergio

Bueno ... pues al final, buscando y un poco de ensayo y error, lo he conseguido....

Lo primero a tener en cuenta, es que el formato de nombre (que a mi ya se me había olvidado de MSDOS) es 8.3, por lo que "Lectura_" ya es de 8 asi que no se puede añadir mas....

En consecuencia lo he eliminado de la ecuación quedando el código de la siguiente manera....

***********************************************************
  char nombrefichero[12];
  i = 1;
  int exist = LOW ;
 
  while (exist == LOW)
  {
    sprintf(nombrefichero, "%d.txt",i); //genera el archivo 1.txt, 2.txt ..... xxxxxxxx.txt
    if (SD.exists(nombrefichero))
    {
      i = i+1;
    }
    else
    {
      exist = HIGH;
    }
   
  }


 
 
  myFile = SD.open(nombrefichero, FILE_WRITE);

...

...

************************************************************

ya siento preguntar y luego autocontestarme (pregunto cuando me desespero), pero soy muy impaciente y al final probando sale...

gracias....

guiz

Gracias por la autorespuesta, es justo lo que estaba buscando. Me gusta el sprintf :)

Go Up