Stream.readStringUntil()

De ArduWiki
Revisión del 14:29 6 may 2019 de Kike GL (Discusión | contribuciones) (Referencias)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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'
}

Vea también


Referencias