Diferencia entre revisiones de «Serial.readString()»

De ArduWiki
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
lee los caracteres del buffer serie en una cadena. La función se anula si el tiempo de espera se ha alcanzado (ver [[setTimeout()]]).
+
Lee caracteres y los coloca en un [[String]]. La función finaliza cuando el tiempo de espera (ver Serial.setTimeout()) se ha agotado.
 
 
Esta función es parte de la clase [[Stream]] y es llamada por cualquier clase que herede de ella ([[Wire]], [[Serial]], etc.).
 
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 10: Línea 8:
  
 
== Retorna ==
 
== Retorna ==
Una cadena leída del buffer serie.
+
El objeto [[String]] resultante de la lectura.
  
 
== Advertencias ==
 
== Advertencias ==
Nada.
+
* Hay un "bug" o fallo con esta función: si el flujo de entrada es constante (tiempo de espera nunca se agota), se corre el riesgo de colgar completamente el programa. La razón se debe a que, conceptualmente, [[String]] es ilimitado en tamaño; pero como la [[SRAM]] no es así, eventualmente el programa llegará a colapsar.
  
 
== Ejemplo ==
 
== Ejemplo ==
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
if (Serial.available()) {
 +
  Serial.print(F("Mensaje recuperado: \""));
 +
  Serial.print(Serial.readString()); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
 +
  Serial.println('\"');
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 20:27 7 jul 2018

Descripción

Lee caracteres y los coloca en un String. La función finaliza cuando el tiempo de espera (ver Serial.setTimeout()) se ha agotado.

Sintaxis

Serial.readString();

Retorna

El objeto String resultante de la lectura.

Advertencias

  • Hay un "bug" o fallo con esta función: si el flujo de entrada es constante (tiempo de espera nunca se agota), se corre el riesgo de colgar completamente el programa. La razón se debe a que, conceptualmente, String es ilimitado en tamaño; pero como la SRAM no es así, eventualmente el programa llegará a colapsar.

Ejemplo

if (Serial.available()) {
  Serial.print(F("Mensaje recuperado: \""));
  Serial.print(Serial.readString()); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
  Serial.println('\"');
}

Vea también

Referencias