Go Down

Topic: incremento de numero en nombre de archivo SD SOLUCIONADO (Read 953 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 :)

Joel2612

Hola buenas tardes, quisiera saber cual es el codigo, igual estoy haciendo un datalogger y enviar datos a internet, me gustaria saber tu configuracion completa para crear varios ficheros txt, soy nuevo en esto y me gustaria que me hechen la mano :'(   :'(   :'(   :'(   :'(   :'( 

surbyte

No reflotes temas viejos.
Mira la fecha  Oct 18, 2012, 11:17 pm

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy