Go Down

Topic: Guardar variable Int, en SD. Problema de sobreescritura.  (Read 220 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
 


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