Diferencia entre revisiones de «Stream.readBytesUntil()»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripción == == Sintaxis == <pre> </pre> == Parametros == == Retorna == == Advertencias == Nada. == Ejemplo == <syntaxhighlight lang="c++"> </syntaxhighlight> =...»)
 
(Vea también)
 
(No se muestran 3 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
 +
Lee caracteres desde el flujo de entrada, hacia el buffer especificado. La función termina si la longitud determinada se ha leído, se ha encontrado el caracter terminador (no lo incluye en la lectura pero sí lo descarta/ignora del flujo), o el tiempo de espera (ver [[Stream.setTimeout()]]) se ha agotado.
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
 +
objetoStream.readBytesUntil(caracter, buffer, largo);
 
</pre>
 
</pre>
  
 
== Parametros ==
 
== Parametros ==
 +
;caracter: el caracter terminador ([[char]]).
 +
;buffer: el buffer/vector/matriz para almacenar los bytes ([[char]]* o [[byte]]*).
 +
;largo: el número de bytes a leer ([[int]]).
  
 
== Retorna ==
 
== Retorna ==
 +
Devuelve el número de caracteres colocados en el búfer ([[int]]). Un 0 significa que no se encontró nada durante el tiempo de espera o antes del terminador.
  
 
== Advertencias ==
 
== Advertencias ==
Nada.
+
* La longitud del buffer debe respetarse, de lo contrario se corre el riesgo de un "desbordamiento de buffer" que puede corromper el contenido la memoria de ejecución ([[SRAM]]).
  
 
== Ejemplo ==
 
== Ejemplo ==
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
if (Serial.available()) {
 +
  buffer[Serial.readBytesUntil('\r', buffer, sizeof(buffer) - 1)] = 0; // Colocar el terminador de cadenas de caracteres
 +
  Serial.read(); // Descarta el '\n' que suele venir con el '\r'
 +
  Serial.print(F("Linea de texto leida: \""));
 +
  Serial.print(buffer);
 +
  Serial.println('\"');
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[Stream.flush()]]
+
<categorytree mode=all>Stream</categorytree>
* [[Stream.find()]]
 
* [[Stream.findUntil()]]
 
* [[Stream.peek()]]
 
  
 
== Referencias ==
 
== Referencias ==
  
[[Category:Funciones]]
+
[[Category:Stream]]

Revisión actual del 18:30 6 may 2019

Descripción

Lee caracteres desde el flujo de entrada, hacia el buffer especificado. La función termina si la longitud determinada se ha leído, se ha encontrado el caracter terminador (no lo incluye en la lectura pero sí lo descarta/ignora del flujo), o el tiempo de espera (ver Stream.setTimeout()) se ha agotado.

Sintaxis

objetoStream.readBytesUntil(caracter, buffer, largo);

Parametros

caracter
el caracter terminador (char).
buffer
el buffer/vector/matriz para almacenar los bytes (char* o byte*).
largo
el número de bytes a leer (int).

Retorna

Devuelve el número de caracteres colocados en el búfer (int). Un 0 significa que no se encontró nada durante el tiempo de espera o antes del terminador.

Advertencias

  • La longitud del buffer debe respetarse, de lo contrario se corre el riesgo de un "desbordamiento de buffer" que puede corromper el contenido la memoria de ejecución (SRAM).

Ejemplo

if (Serial.available()) {
  buffer[Serial.readBytesUntil('\r', buffer, sizeof(buffer) - 1)] = 0; // Colocar el terminador de cadenas de caracteres
  Serial.read(); // Descarta el '\n' que suele venir con el '\r'
  Serial.print(F("Linea de texto leida: \""));
  Serial.print(buffer);
  Serial.println('\"');
}

Vea también


Referencias