Diferencia entre revisiones de «Stream»
(La referencia "SD" se supone que es a la librería) |
m (→Métodos) |
||
Línea 7: | Línea 7: | ||
== Métodos == | == Métodos == | ||
− | {{Nota|'''Stream''' es una clase "abstracta" o "virtual"; a pesar de que no se le pueda referir directamente por su nombre, así se denotará en la siguiente tabla con el propósito de diferenciarse de las subclases.}}{{Nota|A pesar de estas funciones existen en varias implementaciones (ej.: [[Serial]]), su función real puede variar según el contexto de la subclase. Aquí se explicarán de manera generalizada.}}{{Nota|Se entiende por '''flujo sincrónico''' por aquel que no posee buffer y bloquea la ejecución del programa cada vez que se intenta operar sobre este; su | + | {{Nota|'''Stream''' es una clase "abstracta" o "virtual"; a pesar de que no se le pueda referir directamente por su nombre, así se denotará en la siguiente tabla con el propósito de diferenciarse de las subclases.}}{{Nota|A pesar de estas funciones existen en varias implementaciones (ej.: [[Serial]]), su función real puede variar según el contexto de la subclase. Aquí se explicarán de manera generalizada.}}{{Nota|Se entiende por '''flujo sincrónico''' por aquel que no posee buffer y bloquea la ejecución del programa cada vez que se intenta operar sobre este; su opuesto, el '''flujo asincrónico''', sí tiene buffer y no bloquea. Se entiende por '''flujo byte a byte''' o '''flujo de caracteres''' a aquel donde los bytes son recibidos/enviados inmediatamente; mientras que el '''flujo por bloques''' necesariamente debe tener un buffer llamado "caché", y los datos son enviados/recibidos únicamente bajo demanda.}} |
{|class="wikitable" | {|class="wikitable" | ||
!Método!!Descripcion | !Método!!Descripcion |
Revisión del 00:48 5 jul 2018
Contenido
Descripción
Stream es la clase base para las secuencias (flujos) de entrada, basadas en caracteres y binarios. No se llama directamente, sino que se invoca cada vez que utiliza una función que depende de él.
Al heredar también de Print, además adquiere la capacidad de ser la base para flujos que a la vez son de salida (bidireccionales).
Stream define las funciones de lectura en Arduino. Al usar cualquier funcionalidad principal que use un Serial.read() método similar, puede asumir de manera segura que llama a la clase Stream. Para funciones como Serial.print(), Stream hereda de la clase Print.
Nota: Cuando se crea una clase que requiera de las siguientes funciones (métodos), estas DEBEN ser implementadas explícitamente: read(), peek(), available(), write() de un único byte y flush(). availableForWrite() es opcional, sin embargo debería implementarse si el flujo de salida es asincrónico (no bloqueante) y byte a byte; no así para transferencias por bloques (ej.: para memorias de almacenamiento masivo como las tarjetas SD).
Métodos
Nota: Stream es una clase "abstracta" o "virtual"; a pesar de que no se le pueda referir directamente por su nombre, así se denotará en la siguiente tabla con el propósito de diferenciarse de las subclases.
Nota: A pesar de estas funciones existen en varias implementaciones (ej.: Serial), su función real puede variar según el contexto de la subclase. Aquí se explicarán de manera generalizada.
Nota: Se entiende por flujo sincrónico por aquel que no posee buffer y bloquea la ejecución del programa cada vez que se intenta operar sobre este; su opuesto, el flujo asincrónico, sí tiene buffer y no bloquea. Se entiende por flujo byte a byte o flujo de caracteres a aquel donde los bytes son recibidos/enviados inmediatamente; mientras que el flujo por bloques necesariamente debe tener un buffer llamado "caché", y los datos son enviados/recibidos únicamente bajo demanda.
Método | Descripcion |
---|---|
Stream.setTimeout() | Cambia el tiempo de espera (de la llegada de nuevos datos). |
Stream.getTimeout() | Retorna el tiempo de espera actualmente configurado. |
Stream.available() | Indica el número de bytes/caracteres disponibles para lectura. |
Stream.read() | Lee un carácter/byte disponible. |
Stream.readBytes() | Lee uno o más bytes, y los almacena en el buffer/vector/matriz espeficificado. |
Stream.readBytesUntil() | Similar al anterior, excepto que con la posibilidad de además finalizar con un terminador. |
Stream.readString() | Convierte el flujo de entrada en un objeto String. |
Stream.readStringUntil() | Similar al anterior, excepto que con la posibilidad de además finalizar con un terminador. |
Stream.peek() | Lee un carácter disponible, pero no lo descarta del flujo y no lo hace "avanzar". |
Stream.write() | Envia datos binarios al flujo de salida. |
Stream.availableForWrite() | Indica el número de bytes que todavía están pendientes de enviarse (no aplica para flujos sincrónicos o por bloques). |
Stream.print() | Imprime (envía), al flujo de salida, una representación textual de un dato. |
Stream.println() | Imprime (envía), al flujo de salida, una representación textual de un dato junto con un salto de línea; o solo este último. |
Stream.flush() | Espera a que todos los bytes se hayan enviado (para flujos byte a byte asincrónicos), o fuerza el envío de estos (para flujos por bloques). |
Stream.find() | Lee datos hasta encontrar una coincidencia con una cadena de caracteres o bytes. |
Stream.findUntil() | Similar al anterior, excepto que con la posibilidad de además finalizar con una cadena terminadora. |
Stream.parseInt() | Convierte el flujo de entrada en un valor entero, asumiendo codificación textual. |
Stream.parseFloat() | Convierte el flujo de entrada en un valor punto flotante, asumiendo codificación textual. |
Vea también
- Serial
- String - clase
- Ethernet - clase
- EthernetUDP - clase
- IPAddress - clase
- Server - clase
- Client - clase