Go Down

Topic: Guardar variable Int, en SD. Problema de sobreescritura.  (Read 88 times) previous topic - next topic

oriaj3

Tengo un problema, uso una función para guardar el valor de un int en la SD y otra función para recuperar su valor, pero si guardo 9999, y luego guardo 12, al leer el valor guardado, recupero 1299, es decír, quiero borrar el archivo antes de escribir de nuevo y no lo consigo, ni con SD.remove, ni con O_TRUNC. Pego el código. ¿Alguien tiene alguna sugerencia? me he leído todo lo que aparece en el foro de SD y no encuentro ninguna solución...


Code: [Select]
#include <SPI.h>
#include <SD.h>
File myFile;
int temp;

void setup() {
  Serial.begin(9600);
  Serial.print("Iniciando SD");
  pinMode(4, OUTPUT);

  if (!SD.begin(4)) {Serial.print("Fallo de SD");}
  escribirtiempo(12);
  Serial.print(leertiempo());
}

void loop() {}

int leertiempo(){
  int entero=1; //Si empiezo en 0, me falta 1, así que si empiezo con 1 más
  myFile = SD.open("horas.txt");   //abrir Archivo
  int i=myFile.size()-1;  // Guardo tamaño del número guardado en la memoria para ser el   exponente de 10 (calcular su valor en función de su posición) por eso el -1
 
  if (myFile) {
    while (myFile.available()){ //Leo hasta el final
         entero=entero+((myFile.read()-'0')*pow(10,i));  // Entero es igual a lo anterior más 10^i
         i--;}} //por cada caracter que leo i vale una posición menos. (leo de izquierda a derecha)
    myFile.close(); //Cierro archivo
    return entero; //Devuelvo el valor
    }
 
void escribirtiempo(int tiempo){
  SD.remove("horas.txt"); //Borro el anterior
  myFile = SD.open("horas.txt", FILE_WRITE);  //Creo el archivo

  //myFile = SD.open("horas.txt", O_TRUNC); //Supuesta manera de truncar el archivo para empezar con 0, tambien la he probado.

  // if the file opened okay, write to it:
  if (myFile) {
    //myFile.seek(0); //Posición 0
    myFile.print(tiempo, DEC);//guardo tiempo
    myFile.close();//Cierro archivo
  }
  }

kyocera

Disparo al aire porque C no es lo mío pero ¿has probado a destruir el objeto al final de cada función?
con delete myFile
Puede que esté diciendo una burrada pero por probar...
suerte.

Go Up