Klasse Stream : public Print

Print HardwareSerial

Die abstrakte Klasse Stream ist die Basis Klasse für zeichenorientierte und binäre Ströme. Stream definiert die Lese-Funktionen des Arduino. Für die Ausgabe von Daten stehen die von Print geerbten Methoden zur Verfügung.

Die abstrakten Methoden available(), read(), peek() und flush() müssen von einer konkreten Klasse hardwarespezifisch implementiert werden.

Methoden
constructor Stream () Initialisiert eine neune Instanz der Klasse Stream.  
virtual int available () = 0 Liefert die Anzahl Bytes, die aktuell eingelesen werden können, also z.B. bereits gepuffert wurden. Diese Funktion muss von einer auf die Hardware zugeschnitten Klasse überschrieben werden.
Siehe auch Arduino-Referenz
virtual int read () = 0 Liest ein Byte aus dem Stream und liefert es zurück. Der Rückgabewert -1 signalisiert, dass das aktuell keine Daten zur Verfügung stehen. Diese Funktion muss von einer auf die Hardware zugeschnitten Klasse überschrieben werden.
Siehe auch Arduino-Referenz
virtual int peek () = 0 Liest ein Byte aus dem Stream ohne es zu entfernen. Ein mehrfaches Aufrufen von peek() liefert immer das gleiche Ergebnis, das auch ein Aufruf von read() liefern würde. Der Rückgabewert -1 bedeutet, dass kein Zeichen zum auslesen vorhanden ist. Diese Funktion muss von einer auf die Hardware zugeschnitten Klasse überschrieben werden.
Siehe auch Arduino-Referenz
protected int timedRead () timedRead() versucht wiederholt ein Zeichen einzulesen. Ist dies während des vorgegeben Zeitlimits (s. setTimeout()) nicht möglich, wird -1 zurückgeliefert, ansonsten das eingelesene Zeichen.  
protected int timedPeek () timedPeek() prüft wiederholt auf ein vorhandenes Zeichen. Ist dies während des vorgegeben Zeitlimits (s. setTimeout()) kein Zeichen verfügbar, wird -1 zurückgeliefert, ansonsten das vorhandene Zeichen. Das Zeichen wird nicht aus dem Stream entfernt (s. peek()).  
protected int peekNextDigit () peekNextDigit() entfernt solange vorhandene Zeichen aus dem Stream, bis ein gültiges Ziffernzeichen ('-', '0'...'9') zur Verfolgung steht. Dieses wird dann zurückgeliefert, aber selbst nicht aus dem Stream entfernt. Ein Timeout wird über den Rückgabewert -1 gemeldet. peekNextDigit() nutzt timedPeek() zur Ermittlung der Zeichen und read() zum Entfernen führender nicht numerischer Zeichen.
size_t readBytes (char *buffer, size_t length)

readBytes() liest Daten aus dem Stream in den Puffer buffer. Die Funktion bricht ab, wenn die angegebene Anzahl an Bytes eingelesen oder das Zeitlimit (s. setTimeout()) überschritten wurde. Der Rückgabewert ist die Anzahl der eingelesenen Zeichen. Der Rückgabewert 0 bedeutet, dass keine Daten gelesen werden konnten.

buffer wird nicht durch ein '\0' abgeschlossen.
readBytes() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
size_t readBytesUntil (char terminator,
char *buffer, size_t length)
readBytes() liest Daten aus dem Stream in den Puffer buffer. Die Funktion bricht ab, wenn die angegebene Anzahl an Bytes eingelesen, das Stoppzeichen terminator eingelesen oder das Zeitlimit (s. setTimeOut()) überschritten wurde. Der Rückgabewert ist die Anzahl der nach buffer übertragenen Zeichen. Das Stoppzeichen wird nicht mit übertragen und zählt auch bei der zurück gelieferten Zeichenanzahl nicht mit. Der Rückgabewert 0 bedeutet, dass keine Daten gelesen werden konnten. readBytesUntil() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
String readString () readString() liest Zeichen in einen String. Die Funktion bricht erst dann ab, wenn kein weiteres Zeichen innerhalb des Zeitlimits gelesen werden konnte (s. setTimeout()). readString() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
String readStringUntil (char terminator) readStringUntil() liest Zeichen in einen String. Die Funktion bricht ab, wenn das Stoppzeichen gelesen wurde oder kein weiteres Zeichen innerhalb des Zeitlimits gelesen werden konnte (s. setTimeout()). Das Stoppzeichen wird nicht mit übertragen. readStringUntil() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
bool  findUntil (char *target, size_t targetLen, char *terminate, size_t termLen)

Es werden so lange Daten aus dem Stream entfernt, bis

  • - das Ziel (definiert durch target und targetLen) gefunden wurde. Der Rückgabewert ist dann true.
  • - der Abbruch-String (definiert durch terminate und termLen) gefunden wurde. Der Rückgabewert ist dann false.
  • - ein Timeout eingetreten ist. Der Rückgabewert ist dann false.

Die eingelesenen Zeichen werden verworfen. Dies gilt auch für target und terminate.

findUntil() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
bool findUntil (char *target, char *terminator)

Es werden so lange Daten aus dem Stream entfernt, bis

  • - das Ziel (definiert durch target) gefunden wurde. Der Rückgabewert ist dann true.
  • - der Abbruch-String (definiert durch terminate) gefunden wurde. Der Rückgabewert ist dann false.
  • - ein Timeout eingetreten ist. Der Rückgabewert ist dann false.

Die eingelesenen Zeichen werden verworfen. Dies gilt auch für target und terminate.

findUntil() nutzt timedRead() zum Einlesen der Zeichen.
Siehe auch Arduino-Referenz
bool find (char *target, size_t length)

Es werden so lange Daten aus dem Stream entfernt, bis

  • - das Ziel (definiert durch target und length) gefunden wurde. Der Rückgabewert ist dann true.
  • - ein Timeout eingetreten ist. Der Rückgabewert ist dann false.

Die eingelesenen Zeichen werden verworfen. Dies gilt auch für target.

find() nutzt findUntil().
Siehe auch Arduino-Referenz
bool find (char *target)

Es werden so lange Daten aus dem Stream entfernt, bis

  • - das Ziel (definiert durch target) gefunden wurde. Der Rückgabewert ist dann true.
  • - ein Timeout eingetreten ist. Der Rückgabewert ist dann false.

Die eingelesenen Zeichen werden verworfen. Dies gilt auch für target.

find() nutzt findUntil().
Siehe auch Arduino-Referenz
long parseInt () Liest eine Ganzzahl ein. Führende nicht numerische Zeichen werden übersprungen. Die Funktion bricht ab, wenn das erste nicht numerische Zeichen nach einem gültigen Zeichen ('-', '0'...'9') gelesen wurde oder eine Zeitüberschreitung während des Einlesens auftritt.
Kann innerhalb des Zeitlimits keine einziges gültiges Zeichen erkannt werden, wird 0 zurückgegeben. Tritt eine Zeitüberschreitung während des Einlesens auf, wird der bis dahin ermittelte Wert zurückgeliefert.
Siehe auch Arduino-Referenz
protected long parseInt (char skipChar) Wie ParseInt(). skipChar, typischerweise ein Trennzeichen wie Tausendermarkierung, werden ignoriert und führen nicht zum Abbruch des Einlesens.
float parseFloat () Analog zu ParseInt() jedoch für Fließkommazahlen. Siehe auch Arduino-Referenz
protected float parseFloat (char skipChar) Analog zu ParseInt() jedoch für Fließkommazahlen.  
virtual void flush () = 0 Löscht alle Puffer für diesen Stream und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät. Diese Funktion muss von einer auf die Hardware zugeschnitten Klasse überschrieben werden.
siehe auch Arduino-Referenz
void setTimeout (unsigned long timeout) setTimeout() legt die zeit in Millisekunden fest, nach deren Überschreitung auf Timeout erkannt wird. Die Voreinstellung ist 1000 Millisekunden. Der Wert wird in de geschützten Variablen _timeout abgelegt. Von Stream abgeleitete Klassen können auf dien Wert zu greifen.
Siehe auch Arduino-Referenz

Siehe auch:
Klasse Print
Arduino-Referenz
Arduino-Anatomie: How to Print!?