Diferencia entre revisiones de «Serial.readBytes()»

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> =...»)
 
(Ejemplo 2)
 
(No se muestran 6 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== 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 ==
 
== Sintaxis ==
 
<pre>
 
<pre>
 +
Serial.readBytes(buffer, largo);
 
</pre>
 
</pre>
  
== Parametros ==
+
== Parámetros ==
 +
;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.
  
 
== 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 1 ==
 +
Hay que recordar que el puerto serie transmite caracteres ASCII. Asi por ejemplo si enviamos 23 la respuesta sera 50 y 51.
 +
 
 +
<syntaxhighlight lang="c++">
 +
byte ref[2];
 +
void setup(){
 +
  Serial.begin(115200);
 +
}
 +
 +
void loop(){
 +
  if (Serial.available() > 2){
 +
      Serial.readBytes(ref, 2);
 +
      Serial.println(ref[0]);
 +
      Serial.println(ref[1]);
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 
<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>
  
 
== Vea también ==
 
== Vea también ==
* [[Serial.begin()]]
+
<categorytree mode=all>Serial</categorytree>
* [[Serial.available()]]
 
* [[Serial.print()]]
 
* [[Serial.end()]]
 
  
 
== Referencias ==
 
== Referencias ==
  
[[Category:Funciones]]
+
[[Category:Serial]]

Revisión actual del 00:33 25 jun 2019

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 1

Hay que recordar que el puerto serie transmite caracteres ASCII. Asi por ejemplo si enviamos 23 la respuesta sera 50 y 51.

byte ref[2];
void setup(){
   Serial.begin(115200);
}
 
void loop(){
   if (Serial.available() > 2){
      Serial.readBytes(ref, 2);
      Serial.println(ref[0]);
      Serial.println(ref[1]);
   }
}

Ejemplo 2

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