Diferencia entre revisiones de «Serial.readString()»

De ArduWiki
Saltar a: navegación, buscar
(Referencias)
 
(No se muestran 8 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== 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.
+
Lee caracteres y los coloca en un [[String]]. La función finaliza cuando el tiempo de espera (ver [[Serial.setTimeout()]]) se ha agotado.
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 13: Línea 13:
 
* 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.
 
* 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 1 ==
 +
Envíe por la consola un mensaje corto. Por ejemplo "Hola mundo"
 +
 
 +
<syntaxhighlight lang="c++">
 +
void setup(){
 +
  Serial.begin(9600);
 +
}
 +
void loop(){
 +
  if (Serial.available()) {
 +
      Serial.print("Mensaje recuperado: \"");
 +
      Serial.print(Serial.readString());
 +
      Serial.println('\"');
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 +
Envíe por la consola un mensaje corto. Por ejemplo "Hola mundo"
 +
 
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
if (Serial.available()) {
+
void setup(){
  Serial.print(F("Mensaje recuperado: \""));
+
  Serial.begin(9600);
  Serial.print(Serial.readString()); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
+
}
  Serial.println('\"');
+
void loop(){
 +
  if (Serial.available()) {
 +
      string texto = Serial.print(Serial.readString();
 +
      Serial.println(texto.lenght());
 +
  }
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
== Ejemplo 3 ==
 +
En este ejemplo debes enviar una frase por la consola por ejemplo "Apuntes de Arduino".
 +
 +
<syntaxhighlight lang="c++">
 +
void setup(){
 +
  Serial.begin(9600);
 +
}
 +
void loop(){
 +
  if (Serial.available()) {
 +
    String texto = Serial.readString();
 +
    Serial.println(texto.length());
 +
  }
 +
}</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 17:49 6 may 2019

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 1

Envíe por la consola un mensaje corto. Por ejemplo "Hola mundo"

void setup(){
   Serial.begin(9600);
}
void loop(){
   if (Serial.available()) {
      Serial.print("Mensaje recuperado: \"");
      Serial.print(Serial.readString());
      Serial.println('\"');
   }
}

Ejemplo 2

Envíe por la consola un mensaje corto. Por ejemplo "Hola mundo"

void setup(){
   Serial.begin(9600);
}
void loop(){
   if (Serial.available()) {
      string texto = Serial.print(Serial.readString();
      Serial.println(texto.lenght());
   }
}

Ejemplo 3

En este ejemplo debes enviar una frase por la consola por ejemplo "Apuntes de Arduino".

void setup(){
   Serial.begin(9600);
}
void loop(){
   if (Serial.available()) {
     String texto = Serial.readString();
     Serial.println(texto.length());
   }
}

Vea también


Referencias