firmwareSandsara
SdFiles Class Reference

Se encarga de gestionar la lectura de la memoria SD. More...

#include <SdFiles.h>

Public Member Functions

 SdFiles (String, int=1)
 es el contructor de la clase SdFiles More...
 
 ~SdFiles ()
 es el destructor de la clase se utiliza un destructor para limpiar y liberar la memoria dinamica y cerrar el archivo de tipo File More...
 
int getNextComponents (double *, double *, bool=true)
 lee la siguiente linea del archivo y extrae el valor de los componentes que tiene More...
 
int getStatus ()
 obtiene la variable miembro statusFile More...
 
void autoSetMode (double)
 Seleccion el modo de lectura del archivo dependiendo del estado actual de Sandsara. More...
 
double getStartPoint (int=1, int=0)
 regresa un componente perteneciente al primer punto del archivo. More...
 
double getFinalPoint (int=1, int=0)
 regresa un componente perteneciente al ultimo punto del archivo. More...
 
double getFinalAngle ()
 la funcion encuentra el angulo del ultimo punto que va a ser leido, esto depende del modo de lectura (directionMode) More...
 
double getStartAngle ()
 la funcion encuentra el angulo del primer punto que va a ser leido, esto depende del modo de lectura (directionMode) More...
 
double getStartModule ()
 obtiene el modulo del ultimo punto que se leera del archivo. More...
 
bool isValid ()
 comprueba si un archivo es valido. More...
 

Static Public Member Functions

static int creatListOfFiles (String)
 Crea un archivo que almacena los nombres de los archivos en el directorio "/". More...
 
static int getLineNumber (int, String, String &)
 devuelve la linea lineNumber del archivo con ruta dirFile. More...
 
static int numberOfLines (String)
 calcula el numero de lineas de un archivo More...
 
static int getType (String)
 determina el tipo de archivo por extension. More...
 

Public Attributes

String fileName
 
long pFile
 
int fileType
 
int directionMode
 
File file
 

Static Public Attributes

static int DISTANCIA_MAX = MAX_RADIO
 

Detailed Description

Se encarga de gestionar la lectura de la memoria SD.

Parameters
fileNamecontiene el nombre del archivo que se va a leer.
pFilese utiliza como apuntador a alguna linea del archivo.
fileTypealmacena el tipo de archivo pudiendo ser:
  • 1 –> .txt
  • 2 –> .thr
  • 3 –> .bin
  • -1 –> ninguno de los anteriores
directionModealmacena la direccion de lectura del archivo, pudiendo ser:
  • 0 –> lo leera de abajo hacia arriba (en reversa)
  • 1 –> lo leera de arriba hacia abajo (ejecucion normal)
filees un objeto de tipo File para el uso de la SD.
pFileBinse utiliza como apuntador a la linea de un archivo .bin.
charsToReadalmacena el numero de bytes que se deben leer.
statusFilealmacena un codigo de error que puede significar lo siguiente
  • 0 no hubo problemas
  • 1 ya no hay mas lineas por leer en el archivo
  • -1 no se encontro el separador de los componentes (',' o ' ')
  • -4 no se encontro un segundo componente
  • -6 no es un tipo de archivo valido
componentSeparatorse utiliza para identificar el caracter que separa los 2 componentes del archivo.
lineSeparatorse utiliza para identificar el caracter que separa a cada linea del archivo.
dataBufferBinse utiliza para almacenar los datos de la SD.
currentRowalmacena una linea del archivo como texto.
dataBufferalmacena parte del archivo de la SD.

Constructor & Destructor Documentation

◆ SdFiles()

SdFiles::SdFiles ( String  nameF,
int  directionMode = 1 
)

es el contructor de la clase SdFiles

Parameters
nameFes el nombre del archivo que se va a leer desde la SD
directionModees el modo en que se va a leer del archivo, por defecto es 1. 1 representa que se va a leer el archivo de arriba hacia abajo y 0 que se debe leer de abajo para arriba.

◆ ~SdFiles()

SdFiles::~SdFiles ( )

es el destructor de la clase se utiliza un destructor para limpiar y liberar la memoria dinamica y cerrar el archivo de tipo File

Member Function Documentation

◆ autoSetMode()

void SdFiles::autoSetMode ( double  zCurrent)

Seleccion el modo de lectura del archivo dependiendo del estado actual de Sandsara.

para ello encuentra el modulo del primer y utlimo punto del archivo y calcula cual es el más cercano de la posicion actual de Sandsara si es el ultimo punto del archivo, entonces iniciará a leerlo de arriba hacia abajo y si no, de abajo hacia arriba si la distancia a la que se encuentra es la misma de ambos puntos del archivo entonces leera el archivo de arriba hacia abajo

Parameters
zCurrentEs la distancia actual del centro a la esfera.
Note
No regresa nada, pero cambia el valor de la variable directionMode

◆ creatListOfFiles()

int SdFiles::creatListOfFiles ( String  fileName)
static

Crea un archivo que almacena los nombres de los archivos en el directorio "/".

Parameters
fileNamees el nombre del archivo que se va a crear.
Returns
el numero de archivos que encontro y registro o -1 si no se pudo crear el archivo.

◆ getFinalAngle()

double SdFiles::getFinalAngle ( )

la funcion encuentra el angulo del ultimo punto que va a ser leido, esto depende del modo de lectura (directionMode)

Note
Esta funcion debe ser llamada antes del proceso de lectura porque modifica las variables pFile y dataBuffer, y despues de haber asignado un valor a directionMode
Returns
un valor que representa un angulo en radianes pudiendo tomar cualquier valor que permita un tipo de dato double

◆ getFinalPoint()

double SdFiles::getFinalPoint ( int  component = 1,
int  ignoreZero = 0 
)

regresa un componente perteneciente al ultimo punto del archivo.

Parameters
componentes la poscion del componente que se quiere obtener, es decir:
  • 1 –> para el primer componente
  • 2 –> para el segundo componente en el caso de archivos .txt o .bin el primer componente es 'x', y el segundo 'y' en el caso de archivos .thr el primer componente es 'z', y el segundo 'theta'
ignoreZerosi este valor es 1, devolvera el primer punto que no sea 0,0 (coordenadas cartesianas) si es un archivo .thr este parametro no aplica.
Returns
el componente deseado del ultimo punto del archivo.

◆ getLineNumber()

int SdFiles::getLineNumber ( int  lineNumber,
String  dirFile,
String &  lineText 
)
static

devuelve la linea lineNumber del archivo con ruta dirFile.

Parameters
lineNumberes el numero de la linea que se desea leer, para la primera linea este parametro debe ser 1, no 0.
dirFilees la direccion del archivo, empezando con '/'.
lineTextes la variable donde se va a guardar el contenido de la linea leida.
Returns
un codigo de error, pudiendo ser alguno de los siguientes.
  • 0, Encontro la linea lineNumber y esta linea termina con un '\n'.
  • 1, Encontro la linea lineNumber, pero no termina con '\n'.
  • 2, No encontro la linea lineNumber y no se encontro un '\n' al final de esta linea, por lo que en lineText esta guardada la ultima linea del archivo.
  • 3, No encontro la linea lineNumber y sí se encontro un '\n' al final de esta linea, por lo que en lineText esta guardada la ultima linea del archivo.
  • -1, No se pudo abrir el archivo con la direccion dirFile.
  • -2, El archivo abierto es un directorio.
  • -3, La linea que se desea leer no es valida.

◆ getNextComponents()

int SdFiles::getNextComponents ( double *  component1,
double *  component2,
bool  bleProgress = true 
)

lee la siguiente linea del archivo y extrae el valor de los componentes que tiene

Parameters
component1es donde se almacenara el primero componente (x o z)
component2es donde se almacenara el segundo componente (y o theta)
Note
los componentes se encuentran comprendidos en los siguientes rangos.
  • x,y –> [-150,150]
  • z –> [0, 150]
  • theta –> (-inf, inf) Sin embargo los datos se pueden salir de estos rangos si el archivo no sigue las indicaciones correctas.
Returns
un codigo de error que puede significar lo siguiente
  • 0 no hubo problemas
  • 1 ya no hay mas lineas por leer en el archivo
  • 3 la linea es un comentario.
  • 5 es la ultima linea y ya no hay mas por leer del archivo.
  • -1 no se encontro el separador de los componentes (',' o ' ')
  • -4 no se encontro un segundo componente
  • -6 no es un tipo de archivo valido
  • -10 ya no hay mas archivos por leer por posible problema con memoria sd.

◆ getStartAngle()

double SdFiles::getStartAngle ( )

la funcion encuentra el angulo del primer punto que va a ser leido, esto depende del modo de lectura (directionMode)

Returns
un valor que representa un angulo en radianes pudiendo tomar cualquier valor que permita un tipo de dato double

◆ getStartModule()

double SdFiles::getStartModule ( )

obtiene el modulo del ultimo punto que se leera del archivo.

Returns
el modulo correspondiente al ultimo punto que se leera del archivo.

◆ getStartPoint()

double SdFiles::getStartPoint ( int  component = 1,
int  ignoreZero = 0 
)

regresa un componente perteneciente al primer punto del archivo.

Parameters
componentes la poscion del componente que se quiere obtener, es decir:
  • 1 –> para el primer componente
  • 2 –> para el segundo componente en el caso de archivos .txt o .bin el primer componente es 'x', y el segundo 'y'. en el caso de archivos .thr el primer componente es 'z', y el segundo 'theta'.
ignoreZerosi este valor es 1, devolvera el primer punto que no sea 0,0 (coordenadas cartesianas) si es un archivo .thr este parametro no aplica.
Returns
el componente deseado del primer punto del archivo.

◆ getStatus()

int SdFiles::getStatus ( )

obtiene la variable miembro statusFile

Returns
el estado actual del archivo leido
See also
getNextComponents

◆ getType()

int SdFiles::getType ( String  name_file)
static

determina el tipo de archivo por extension.

Returns
un numero que representa uno de los siguientes tipos de archivo.
  • 1 para un .txt.
  • 2 para un .thr.
  • 3 para un .bin.
  • -1 ninguno de los anteriores.

◆ isValid()

bool SdFiles::isValid ( )

comprueba si un archivo es valido.

Returns
si es valido regresa true si no false.

◆ numberOfLines()

int SdFiles::numberOfLines ( String  dir)
static

calcula el numero de lineas de un archivo

Parameters
dires la direccion, en la sd, del archivo, debe contener un '/', ejemplo "/archivo.thr".
Returns
el numero de lineas que contiene el archivo

Member Data Documentation

◆ directionMode

int SdFiles::directionMode

◆ DISTANCIA_MAX

int SdFiles::DISTANCIA_MAX = MAX_RADIO
static

◆ file

File SdFiles::file

◆ fileName

String SdFiles::fileName

◆ fileType

int SdFiles::fileType

◆ pFile

long SdFiles::pFile

The documentation for this class was generated from the following files: