> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/funktionsblocke/blocks-reference/input-output/communication/serial-read.md).

# Serial Read

Dieser Funktionsblock liest die zuletzt empfangene Zeile einer seriellen Verbindung (nicht-blockierend) und konvertiert sie in einen gewählten Datentyp. Er ist darauf ausgelegt, gegen veraltete oder fehlerhafte Eingaben robust zu sein, indem bei Bedarf ein vom Benutzer definierter Standardwert zurückgegeben wird.

## 📥 Eingänge <a href="#inputs" id="inputs"></a>

* `Enable` Boolean-Eingangsbuchse, die das Lesen aktiviert oder deaktiviert.
* `ConnId` Generische Eingangsbuchse, die auswählt, von welcher seriellen Verbindung gelesen werden soll (Verbindungskennung).

## 📤 Ausgänge <a href="#outputs" id="outputs"></a>

* `Data` Generische Ausgangsbuchse, die den zuletzt konvertierten Wert sendet (oder den Standardwert, wenn die Daten veraltet sind oder die Konvertierung fehlschlägt).

## 🕹️ Steuerungen <a href="#controls" id="controls"></a>

* `Stale timeout (s)` Texteingabe, die festlegt, wie lange auf eine neue Zeile gewartet wird, bevor die Lesung als veraltet betrachtet wird.
* `Data Type` Dropdown zur Auswahl des Konvertierungstyps für eingehende Zeilen. Verfügbare Optionen: `String`, `Int`, `Float`, `Boolean`, `HexInt`, `Bytes`.
* `Default (on stale/parse fail)` Texteingabe, die den Ersatzwert angibt, der zurückgegeben wird, wenn keine frischen Daten verfügbar sind oder die Konvertierung fehlschlägt. Bei `Bytes` als Eingabe hexadezimale Zeichen (z. B. `AA55`) verwenden.

## 🎯 Funktionen <a href="#features" id="features"></a>

* Nicht-blockierendes Lesen der zuletzt verfügbaren Zeile.
* Erkennung veralteter Daten, damit alte Zeilen nicht unbegrenzt weitergereicht werden.
* Mehrere Konvertierungstypen mit konfigurierbarem Fallback-Wert.
* Einfache Ein- und Ausgänge zur Integration in größere Szenarien.

## 📝 Nutzung <a href="#usage" id="usage"></a>

1. Geben Sie eine Verbindungskennung in `ConnId` an, die sich auf eine aktive serielle Verbindung bezieht.
2. Verwenden Sie `Enable`, um das Lesen zu starten oder zu stoppen, ohne den Block zu entfernen.
3. Stellen Sie `Stale timeout (s)` ein, um zu definieren, wie frisch die eingehenden Daten sein müssen.
4. Wählen Sie den gewünschten `Data Type` zur Konvertierung der eingehenden Zeilen.
5. Legen Sie `Default (on stale/parse fail)` fest, um zu steuern, was der Block ausgibt, wenn keine frischen oder parsebaren Daten vorliegen.
6. Verwenden Sie die Ausgabe `Data` in nachgelagerten Blöcken zur Protokollierung, Visualisierung oder Veröffentlichung.

## 📊 Bewertung <a href="#evaluation" id="evaluation"></a>

* Wenn aktiviert, versucht der Block, die zuletzt empfangene Zeile von der ausgewählten Verbindung zu lesen.
* Wenn innerhalb des konfigurierten Stale-Timeouts keine neue Zeile ankommt, gibt der Block den konfigurierten Standardwert aus.
* Wenn die Konvertierung in den ausgewählten Datentyp fehlschlägt, gibt der Block den konfigurierten Standardwert aus.
* Für den Typ `Bytes` behandelt der Block den Standardwert als hexadezimalen Text.

## 💡 Tipps und Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Verwenden Sie `Debug Input`, um rohe Ergebnisse während der Entwicklung zu protokollieren oder zu untersuchen.
* Leiten Sie serielle Messwerte an `Data to JSON` oder `CSV Export` weiter für strukturierte Protokollierung oder Batch-Export.
* Veröffentlichen Sie verarbeitete Werte mit `MQTT Publish` oder senden Sie sie an einen Webservice mittels `REST API - Post`.
* Speichern Sie Werte zur späteren Verwendung mit `Data Write Local` oder `Data Write Global` und lesen Sie sie mit den entsprechenden Lese-Blöcken wieder aus.
* Visualisieren Sie numerische Daten in Echtzeit mit `Scope`, um Trends oder Anomalien zu beobachten.
* Kombinieren Sie mit `Logic Input` oder Vergleichsblöcken, um Aktionen basierend auf eingehenden Werten auszulösen (z. B. Alarm, wenn ein numerischer Messwert einen Schwellenwert überschreitet).

## 🛠️ Fehlersuche <a href="#troubleshooting" id="troubleshooting"></a>

* Wenn auf `Data` keine Daten erscheinen, überprüfen Sie, ob die angegebene `ConnId` auf eine aktive Verbindung verweist.
* Wenn die Ausgabe stets der Standardwert ist, erhöhen Sie `Stale timeout (s)` oder stellen Sie sicher, dass die Quelle aktiv Zeilen sendet.
* Wenn die Konvertierung für einen numerischen oder booleschen Typ fehlschlägt, prüfen Sie das rohe Textformat vom Gerät und passen Sie den Standardwert entsprechend an.
* Für den Typ `Bytes` stellen Sie sicher, dass der Standardwert als gültige hexadezimale Zeichenfolge ohne Leerzeichen oder Nicht-Hex-Zeichen angegeben ist.
