This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Como leer ultima linea de la tarjeta SD?
#1
Buenos días, estoy intentando leer la ultima linea en una tarjeta microSD, para poder utilizar esa información y actualizar unas variables en Arduino
el problema es que no consigo que lo haga, he estado buscando y he visto una libreria SEPARADOR.H que me serviria perfectamente con mi idiea, el problema es que no consigo que funcione.
parece que no extrae la información de la tarjeta o que no se posiciona en el principio de la ultima linea para leer, me podéis echar una mano?
mi nivel de programacion no llega ni a la tapa de un libro de programación, por lo que os pido paciencia, Gracias.
 
estos datos estarían en mi fichero
contadorPotenciaTotal, Contador PUNTA, Contador LLANO, Contador Valle, Contador Year anterior;
5987,                            4108,                       1879,                  61,                         2429;

la idea es que en caso de apagada de luz al reiniciar el arduino el solo leyera la SD y actualizara el ultimo valor, os dejo el codigo por si veis donde falla.
lo absurdo es que me funciono un par de veces, pero algo he tocado y no consigo ver el que, llevo ya una semanita, intentando resolver el problema.

Código:
#include <Separador.h>
Separador s;
#include <SD.h>
#include <SPI.h>

File printFile;
String buffer;
boolean SDfound;


void setup() {
  Serial.begin(9600);

  if (SDfound == 0) {
    if (!SD.begin(4)) {
      Serial.print("The SD card cannot be found");
      while(1);
    }
  }
  SDfound = 1;
  printFile = SD.open("DATALOG.txt",FILE_READ);

  if (printFile)
  {
    bool line=false;
    printFile.seek(printFile.size()-1); //Ubicacion en posicion anterior a ultimo caracter
 
   
    Serial.println("entramos en el if si esta conectado el archivo");

    while (printFile.available())
    {
    if(line==false) //Primero leer en reversa para buscar salto de linea
      {
        char caracter=printFile.read();
        //Serial.println(caracter);
        printFile.seek(printFile.position()-2); 
        Serial.println("estamos buscando el inicio de la linea");
          if(caracter=='\n') //Cuando encuentra salto de linea cambia estado
          {
            Serial.println("hemos encontrado el salto linea");
            line=true;
           
          } 
      }
if(line==true) //Empieza a leer normalmente de izquierda a derecha
      {  char caracter = printFile.read();
      //Serial.println(caracter);
  String cadena = cadena+caracter;
  Serial.println("estamos leyendo la ultima linea");
          if(caracter==';')
          {
            Serial.print("estamos en el break");
            break;
          }
          Serial.println("estamos al inicio de cargar datos");
          Serial.println(cadena);
  String datosrecibidos = printFile.readStringUntil(';');
  Serial.println();
  Serial.println();
  Serial.println(datosrecibidos);
  //String datosrecibidos = cadena;  //buffer = printFile.readStringUntil('\n');
    //Serial.println(datosrecibidos); //Printing for debugging purpose       
    String elemento1 = s.separa(datosrecibidos,',',0);
    String elemento2 = s.separa(datosrecibidos,',',1);
    String elemento3 = s.separa(datosrecibidos,',',2);
  String elemento4 = s.separa(datosrecibidos,',',3);
  String elemento5 = s.separa(datosrecibidos,',',4);
  String elemento6 = s.separa(datosrecibidos,',',5);
  delay (200);
  if (elemento1 !=0){
    Serial.println("el elemento1 es:"+ elemento1);
    Serial.println("el elemento2 es:"+ elemento2);
      Serial.println("el elemento3 es:"+ elemento3);
      Serial.println("el elemento4 es:"+ elemento4);
    Serial.println("el elemento5 es:"+ elemento5);
      Serial.println("el elemento6 es:"+ elemento6);
  }
      }
   
    }
  printFile.close();
}
  }
 
void loop() {
  //empty
}
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  exit status 1 Error compilando para la tarjeta Arduino/Genuino Uno fcojavier 26 59,300 18-03-2022, 11:26 PM
Último mensaje: asesorplaza1
  CONSULTA Error compilando para la tarjeta Arduino Mega or Mega 2560. minaki24fc 2 1,094 26-03-2021, 10:45 PM
Último mensaje: asesorplaza1
  CONSULTA ¿Como hacer que ejecute ultima version del IDE? AcoranTf 1 715 17-06-2020, 10:56 PM
Último mensaje: asesorplaza1
Triste DUDA Error compilando para la tarjeta Arduino/Genuino Uno. Necesito ayuda siro7 9 4,836 28-04-2019, 02:22 PM
Último mensaje: siro7
Exclamación DUDA Error compilando para la tarjeta Arduino/Genuino Uno aimarlasa 2 3,019 16-01-2019, 06:34 PM
Último mensaje: Nullz