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


---

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