Diferencia entre revisiones de «Serial.readBytes()»

De ArduWiki
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
Lee caracteres desde el búfer del puerto serie. La función termina si la longitud determinada se ha leído, o el tiempo de espera (ver [[Serial.setTimeout()]]) de ha alcanzado.
+
Lee caracteres desde el búfer del puerto serie, hacia el especificado. La función termina si la longitud determinada se ha leído, o el tiempo de espera (ver [[Serial.setTimeout()]]) se ha agotado.
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 8: Línea 8:
  
 
== Parámetros ==
 
== Parámetros ==
;buffer: el buffer para almacenar los bytes ([[char]] o [[byte]]).
+
;buffer: el buffer/vector/matriz para almacenar los bytes ([[char]]* o [[byte]]*).
;largo: el número de bytes a leer tipo [int]].
+
;largo: el número de bytes a leer ([[int]]).
  
 
== Retorna ==
 
== Retorna ==
devuelve el número de caracteres colocados en el búfer. Un 0 significa que no se encontraron datos válidos.
+
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.
  
 
== 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.readBytes(buffer, sizeof(buffer) - 1)] = 0; // Colocar el terminador de cadenas de caracteres
 +
  Serial.print(F("Mensaje recuperado: \""));
 +
  Serial.print(buffer);
 +
  Serial.println('\"');
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 00:07 8 jul 2018

Descripción

Lee caracteres desde el búfer del puerto serie, hacia el especificado. La función termina si la longitud determinada se ha leído, o el tiempo de espera (ver Serial.setTimeout()) se ha agotado.

Sintaxis

Serial.readBytes(buffer, largo);

Parámetros

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.

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.readBytes(buffer, sizeof(buffer) - 1)] = 0; // Colocar el terminador de cadenas de caracteres
  Serial.print(F("Mensaje recuperado: \""));
  Serial.print(buffer);
  Serial.println('\"');
}

Vea también

Referencias