Diferencia entre revisiones de «File.read()»

De ArduWiki
Saltar a: navegación, buscar
(Vea también)
(Ejemplo)
Línea 28: Línea 28:
 
   Serial.begin(9600);
 
   Serial.begin(9600);
 
   // Tarjeta inicializada y archivo abierto para lectura
 
   // Tarjeta inicializada y archivo abierto para lectura
 
+
  File archivo = SD.open("archivo.txt", FILE_WRITE);
 
   int dato;
 
   int dato;
 
   while ((dato = archivo.read()) >= 0){
 
   while ((dato = archivo.read()) >= 0){
Línea 34: Línea 34:
 
   }
 
   }
 
   archivo.close();
 
   archivo.close();
 +
}
 +
void loop(){
 +
  //Nada
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Revisión del 19:16 3 jul 2019

Descripción

Lee un byte/caracter del archivo, y además avanza al siguiente. El valor recuperado es relativo a la posición del "cursor".

Sintaxis

archivo.read()
archivo.read(buffer, tamanio);

Parametros

buffer
una matriz de cualquier tipo, aunque usualmente de tipo byte o char (en la implementación se declara como puntero de tipo void).
tamanio
el tamaño de dicha matriz en bytes. (unsigned int).

Retorno

  • Para la primera, el valor recuperado, o -1 si no hay datos para leer (int). Esto último puede deberse a que se alcanzó el final del archivo, porque está cerrado o porque no fue abierto para lectura.
  • Para la segunda, la cantidad de bytes leídos exitosamente (unsigned int). Si retorna cero, es porque no logró leer nada.

Advertencias

  • Si por error no se verifica de antemano si hay datos disponibles, read() retornará 255 para byte en el caso que el valor real sea -1 (nada).
  • Esta función siempre fallará si la instancia representa un directorio o carpeta.

Comentarios

A pesar de que la segunda sintaxis hace lo mismo que readBytes() (y que además se puede utilizar con normalidad), se recomienda la aquí mencionada debido a que es más eficiente para la obtención de múltiples bytes que su contraparte "genérica".

Ejemplo

void setup(){
   Serial.begin(9600);
   // Tarjeta inicializada y archivo abierto para lectura
   File archivo = SD.open("archivo.txt", FILE_WRITE);
   int dato;
   while ((dato = archivo.read()) >= 0){
      Serial.write(dato);           //Imprime caracter leído
   }
   archivo.close();
}
void loop(){
   //Nada
}

Vea también


Referencias