Pages: [1]   Go Down
Author Topic: incremento de numero en nombre de archivo SD SOLUCIONADO  (Read 703 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

« Last Edit: October 13, 2012, 06:02:08 am by Lisergio » Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 38
Posts: 2173
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
  // Methods to determine if the requested file path exists.
  boolean exists(char *filepath);
Logged

   

Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: