Diferencia entre revisiones de «Stream.readStringUntil()»
De ArduWiki
(Página creada con «== Descripción == == Sintaxis == <pre> </pre> == Parametros == == Retorna == == Advertencias == Nada. == Ejemplo == <syntaxhighlight lang="c++"> </syntaxhighlight> =...») |
|||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
+ | Lee caracteres y los coloca en un [[String]]. La función termina si 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> | ||
+ | objetoString.readStringUntil(caracter); | ||
</pre> | </pre> | ||
== Parametros == | == Parametros == | ||
+ | ;caracter: el caracter terminador ([[char]]). | ||
== Retorna == | == Retorna == | ||
+ | El objeto [[String]] resultante de la lectura. | ||
== Advertencias == | == Advertencias == | ||
− | + | * Hay un "bug" o fallo con esta función: si el flujo de entrada es constante (tiempo de espera nunca se agota) o lo suficientemente grande, y nunca se encuentra el caracter terminador; 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 (archivo.available()) { | ||
+ | Serial.print(F("Linea de texto leida: \"")); | ||
+ | Serial.print(archivo.readStringUntil('\r')); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido. | ||
+ | Serial.println('\"'); | ||
+ | archivo.read(); // Descarta el '\n' que suele venir con el '\r' | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 04:09 11 jul 2018
Contenido
Descripción
Lee caracteres y los coloca en un String. La función termina si 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
objetoString.readStringUntil(caracter);
Parametros
- caracter
- el caracter terminador (char).
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) o lo suficientemente grande, y nunca se encuentra el caracter terminador; 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 (archivo.available()) {
Serial.print(F("Linea de texto leida: \""));
Serial.print(archivo.readStringUntil('\r')); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
Serial.println('\"');
archivo.read(); // Descarta el '\n' que suele venir con el '\r'
}