incremento de numero en nombre de archivo SD SOLUCIONADO

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 .....

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

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

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....

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

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 :cry: :cry: :cry: :cry: :cry: :cry:

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