# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/german/function-blocks/input-output/communication/serial-read.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
