Diferencia entre revisiones de «Stream»

De ArduWiki
Saltar a: navegación, buscar
(Métodos)
(Referencia)
 
(No se muestran 16 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
Stream es la clase base para las secuencias basadas en caracteres y binarios. No se llama directamente, sino que se invoca cada vez que utiliza una función que depende de él.
+
'''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 usa un método (función) que depende de él.
  
'''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.
+
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]]).}}
 +
 
 +
== Sintaxis ==
 +
<pre>
 +
Stream objeto;
 +
</pre>
 +
 
 +
== Parámetros ==
 +
;objeto: nombre del objeto instancias de la clase '''Stream'''.
 +
 
 +
== Retorna ==
 +
Nada.
  
 
== 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.}}
  
 
{|class="wikitable"
 
{|class="wikitable"
|+Métodos disponible en clase Stream
+
|+Métodos de clase Stream
 
!Método!!Descripción
 
!Método!!Descripción
 
|-
 
|-
|[[Stream.available()]]||Obtiene la cantidad de bytes disponibles en la transmisión. Esto es solo para bytes que ya han llegado.
+
|[[Stream.setTimeout()]]||Cambia el tiempo de espera (de la llegada de nuevos datos). Por defecto es 1 segundo.
 +
|-
 +
|[[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.read()]]||lee caracteres de una secuencia entrante al búfer.
+
|[[Stream.readString()]]||Convierte el flujo de entrada en un objeto [[String]].
 
|-
 
|-
|[[Stream.peek()]]||Lee un byte del archivo sin avanzar al siguiente.
+
|[[Stream.readStringUntil()]]||Similar al anterior, excepto que con la posibilidad de además finalizar con un terminador.
 
|-
 
|-
|[[Stream.readBytes()]]||Lee caracteres de una secuencia en un búfer.
+
|[[Stream.peek()]]||Lee un carácter disponible, pero no lo descarta del flujo y/o no lo hace "avanzar".
 
|-
 
|-
|[[Stream.readBytesUntil()]]||Lee caracteres de una secuencia en un búfer.
+
|[[Stream.write()]]*||Envia datos binarios al flujo de salida.
 
|-
 
|-
|[[Stream.readString()]]||Lee caracteres de una secuencia en un búfer.  
+
|[[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.readStringUntil()]]||Lee caracteres de una secuencia en una cadena.
+
|[[Stream.print()]]*||Imprime (envía), al flujo de salida, una representación textual de un dato.
 
|-
 
|-
|[[Stream.flush()]]||Borra el búfer una vez que se han enviado todos los caracteres salientes.
+
|[[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.find()]]||Lee los datos de la secuencia hasta que se encuentra la cadena de destino de longitud dada La función devuelve verdadero si se encuentra cadena de destino, falsa si se agota el tiempo de espera.
+
|[[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.findUntil()]]||Lee los datos de la secuencia hasta que se encuentra la cadena de destino de la longitud determinada o cadena de terminación.
+
|[[Stream.find()]]||Lee datos hasta encontrar una coincidencia con una cadena de caracteres o bytes.
 
|-
 
|-
|[[Stream.parseTnt()]]||Devuelve el primer número entero válido (largo) del búfer en serie. Los caracteres que no son dígitos o el signo menos se saltan. El analisis se detiene cuando no se ha leido caracteres por cierto tiempo, en cuyo caso devuelve 0. Ver [[Stream.setTimeout()]]. Termina con el primer carácter no valido. Devuelve un numero tipo [[float]] o 0.
+
|[[Stream.findUntil()]]||Similar al anterior, excepto que con la posibilidad de además finalizar con una cadena terminadora.
 
|-
 
|-
|[[Stream.parseFloat()]]||Devuelve el primer numero de punto flotante en la secuencia de entrada. Los caracteres que no sea digitos o signo - se saltan.
+
|[[Stream.parseInt()]]||Convierte el flujo de entrada en un valor entero, asumiendo codificación textual.
 
|-
 
|-
|[[Stream.setTimeout()]]||Establece los milisegundos máximos para esperar los datos de la secuencia. Por defecto es 1000 milisegundos.
+
|[[Stream.parseFloat()]]||Convierte el flujo de entrada en un valor punto flotante, asumiendo codificación textual.
 
|}
 
|}
 +
 +
{{Nota|los métodos marcados con '''*''' son los que se heredan de [[Print]].}}
 +
 +
== Advertencias ==
 +
* Para usar un método debe reemplazar la palabra '''Stream''' por el nombre del objeto instanciado.
 +
 +
== Comentarios ==
 +
Esta clase esta presente en las siguientes librerías:
 +
* [[Serial]]
 +
* [[Wire]]
 +
* [[Ethernet]]
 +
* [[SD]]
 +
 +
{{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.}}
  
 
== Vea también ==
 
== Vea también ==
* [[Serial]]
+
<categorytree mode=all>Stream</categorytree>
* [[String]]
 
  
 
== Referencia ==
 
== Referencia ==
  
[[Category:Funciones]]
+
[[Category:Stream]]

Revisión actual del 18:22 6 may 2019

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 usa un método (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).


Sintaxis

Stream objeto;

Parámetros

objeto
nombre del objeto instancias de la clase Stream.

Retorna

Nada.

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.


Métodos de clase Stream
Método Descripción
Stream.setTimeout() Cambia el tiempo de espera (de la llegada de nuevos datos). Por defecto es 1 segundo.
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/o 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.

Nota: los métodos marcados con * son los que se heredan de Print.


Advertencias

  • Para usar un método debe reemplazar la palabra Stream por el nombre del objeto instanciado.

Comentarios

Esta clase esta presente en las siguientes librerías:

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.


Vea también


Referencia