> 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-write.md).

# Serial Write

Dieser Funktionsblock sendet Rohdaten über eine ausgewählte serielle Verbindung. Er ist für einfache, nicht blockierende Übertragungen ausgelegt und bietet benutzerfreundliche UI-Optionen zum Konvertieren gängiger Datentypen, Anhängen von Zeilenenden und Steuern des Wiederübertragungsverhaltens.

## 📥 Eingänge

* `Enable`\
  Wird verwendet, um das Senden zu aktivieren oder zu deaktivieren. Wenn `false`, sendet der Block keine Daten.
* `Data`\
  Die zu sendende Nutzlast. Akzeptiert Zahlen, Text, Listen, Booleans oder byte-ähnliche Werte, je nach gewählten Steuerelementen.
* `ConnId`\
  Die Kennung der seriellen Verbindung, die verwendet werden soll. Geben Sie die `ConnId` an, die von einem Verbindungsmanager-Block bereitgestellt wird.

## 📤 Ausgänge

Dieser Funktionsblock erzeugt keine Ausgänge.

## 🕹️ Steuerungen

* `Data Type`\
  Wählen Sie aus, wie das angegebene `Data` vor dem Senden konvertiert werden soll. Gängige Optionen sind string, integer, float, boolean sowie byte-/hex-Formate (`HexBytes`, `Bytes`).
* `Line ending`\
  Wählen Sie eine Folge aus, die an die Nutzlast angehängt wird. Typische Optionen: LF, CRLF, CR oder none.
* `Send policy`\
  Legt fest, wann gesendet wird:
  * `On change` sendet nur, wenn die finale Byte-Nutzlast sich von der zuletzt gesendeten unterscheidet.
  * `Always` sendet bei jeder Auswertung, sofern aktiviert.

## 🎨 Funktionen

* Konvertierung von Datentypen für gängige Formate, sodass Sie benutzerfreundliche Werte eingeben und der Block die entsprechende Byte-Sequenz sendet.
* Optionales, konfigurierbares Zeilenende, um Erwartungen des Empfangsgeräts zu erfüllen.
* Send-Policy, um das wiederholte Senden identischer Nachrichten zu vermeiden.
* Nicht-blockierendes Schreibverhalten, sodass der Fluss während der Übertragung weiterläuft.
* Arbeitet mit externen Connection-Manager-Blöcken zusammen, die `ConnId`-Werte bereitstellen.

## 📊 Ausführungsmechanismus

Beim Auswerten des Blocks passiert Folgendes:

1. Wenn `Enable` inaktiv oder leer ist, wird nichts gesendet.
2. Sind gültige Werte für `Data` und `ConnId` vorhanden, konvertiert der Block `Data` entsprechend der Einstellung bei `Data Type` und hängt das gewählte `Line ending` an.
3. Ist `Send policy` auf `On change` gesetzt, vergleicht der Block die vorbereitete Nutzlast mit der vorherigen und überspringt das Senden, falls identisch.
4. Die vorbereitete Byte-Nutzlast wird auf die serielle Verbindung gesendet, die durch `ConnId` referenziert wird — ohne den Rest des Systems zu blockieren.

## 📝 Nutzungshinweise

1. Erstellen oder wählen Sie eine serielle Verbindung und merken Sie sich die Verbindungskennung.
2. Geben Sie diese Kennung in den `ConnId`-Eingang.
3. Füttern Sie das gewünschte Sendeformat in den `Data`-Eingang.
4. Stellen Sie `Data Type` so ein, dass es zu Ihren Daten passt (z. B. `HexBytes` für Hex-Strings oder `Bytes` für rohe Byte-Listen).
5. Wählen Sie ein `Line ending`, falls das Empfangsgerät eines erwartet.
6. Nutzen Sie `Send policy`, um unnötige Wiederholungen bei konstanten Werten zu vermeiden.
7. Schalten Sie `Enable` ein oder aus, um das Senden zu starten oder zu stoppen.

## 💡 Tipps und Tricks

* Kombinieren Sie mit `Serial Connect` / Connection-Manager-Blöcken, um `ConnId`-Werte zu erhalten und zu verwalten.
* Verwenden Sie `String Input` oder `Number Input`-Blöcke, um `Data` vor dem Senden vorzubereiten und zu validieren.
* Formatieren Sie komplexe Nutzlasten ggf. vorab mit `String Merge` oder `Data to JSON`, wenn Sie strukturierte Strings (z. B. JSON) senden möchten.
* Wenn Sie gesendete Daten protokollieren möchten, hängen Sie nachgelagerte Blöcke wie `CSV Export` oder `Image Logger` an.
* Für bedingtes Senden kombinieren Sie mit `Logic Input`, `And`, `Or` oder `Greater`, um Übertragungen zu steuern.
* Für Protokoll-Bridges koppeln Sie mit `MQTT Publish` oder `REST API - Post`, um serielle Daten an Netzwerkdienste weiterzuleiten.
* Nutzen Sie `Debug Input`, um ausgehende Nutzlasten während der Entwicklung zu prüfen.

## 🛠️ Fehlersuche

* Es wird nichts gesendet: Prüfen Sie, ob `Enable` aktiv ist, `Data` nicht leer ist und `ConnId` auf eine aktive Verbindung verweist.
* Empfangsgerät ignoriert Nachrichten: Überprüfen Sie das gewählte `Line ending` und probieren Sie LF, CRLF, CR oder none aus.
* Identische Nachrichten werden nicht gesendet, obwohl erwartet: Stellen Sie `Send policy` auf `Always`, wenn wiederholte Senden erforderlich ist.
* Unerwartete Bytes auf der Leitung: Stellen Sie sicher, dass `Data Type` zum bereitgestellten Format passt (z. B. `HexBytes` für Hex-Strings oder `Bytes` für numerische Listen).
