> 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/french/function-blocks/blocks-reference/input-output/communication/serial-write.md).

# Serial Write

Ce bloc fonction envoie des données brutes via une connexion série sélectionnée. Il est conçu pour des transmissions simples et non bloquantes et propose des options d'UI pratiques pour convertir des types de données courants, ajouter des terminaisons de ligne et contrôler le comportement de réémission.

## 📥 Entrées

`Enable` Utilisé pour activer ou désactiver l'envoi. Lorsque false, le bloc n'envoie rien.

`Data` La charge utile à envoyer. Accepte des nombres, du texte, des listes, des booléens ou des valeurs de type octet selon les contrôles sélectionnés.

`ConnId` Identifiant de la connexion série à utiliser. Fournissez l'identifiant de connexion produit par un bloc gestionnaire de connexion.

## 📤 Sorties

Ce bloc fonction ne produit pas de sorties.

## 🕹️ Contrôles

`Data Type` Choisissez comment la `Data` fournie sera convertie avant l'envoi. Choix courants : string, integer, float, boolean, et formats byte/hex.

`Line ending` Sélectionnez une séquence terminale à ajouter à la charge utile. Les options incluent généralement LF, CRLF, CR ou none.

`Send policy` Choisissez quand transmettre :

* `On change` n'envoie que lorsque la charge utile finale diffère de la dernière charge envoyée.
* `Always` envoie à chaque évaluation du bloc lorsqu'il est activé.

## 🎨 Fonctionnalités

* Conversion des types de données pour les formats courants : entrez des valeurs lisibles humainement, le bloc enverra la séquence d'octets correspondante.
* Terminaison de ligne configurable pour correspondre aux attentes de l'appareil distant.
* Politique d'envoi pour éviter la répétition de messages identiques lorsque ce n'est pas nécessaire.
* Comportement d'écriture non bloquant pour que le flux continue de s'exécuter pendant la transmission.
* Fonctionne avec des blocs gestionnaires de connexion externes qui fournissent des valeurs `ConnId`.

## 📊 Mécanisme d'exécution

Lors de l'évaluation du bloc :

1. Si l'entrée `Enable` est inactive ou vide, rien n'est envoyé.
2. Si des valeurs valides pour `Data` et `ConnId` sont présentes, le bloc convertit `Data` selon le `Data Type` sélectionné et ajoute la `Line ending` choisie.
3. Si la `Send policy` est `On change`, le bloc compare la charge utile préparée à la charge précédente et saute l'envoi si elles sont identiques.
4. La charge utile en octets préparée est envoyée vers la connexion série référencée par `ConnId` sans bloquer le reste du système.

## 📝 Instructions d'utilisation

1. Créez ou sélectionnez une connexion série et notez son identifiant de connexion.
2. Fournissez cet identifiant à l'entrée `ConnId`.
3. Injectez la valeur que vous souhaitez envoyer dans l'entrée `Data`.
4. Réglez le contrôle `Data Type` pour correspondre à votre donnée (par exemple utilisez `HexBytes` pour des chaînes hex ou `Bytes` pour des listes d'octets brutes).
5. Choisissez la `Line ending` souhaitée si l'appareil récepteur en attend une.
6. Utilisez la `Send policy` pour éviter les répétitions inutiles lors de l'envoi de valeurs constantes.
7. Basculez `Enable` pour démarrer ou arrêter l'envoi.

## 💡 Conseils et astuces

* Combinez avec `Serial Connect` / blocs gestionnaires de connexion pour obtenir et gérer les valeurs `ConnId`.
* Utilisez `String Input` ou `Number Input` pour préparer et valider la `Data` avant l'envoi.
* Préformatez des charges complexes avec `String Merge` ou `Data to JSON` pour obtenir des chaînes structurées (par ex. messages JSON).
* Si vous devez enregistrer ou exporter les données envoyées, ajoutez `CSV Export` ou `Image Logger` en aval dans votre flux.
* Pour un envoi conditionnel, combinez avec `Logic Input`, `And`, `Or` ou `Greater` pour contrôler les transmissions.
* Pour des ponts de protocole, associez à `MQTT Publish` ou `REST API - Post` pour transmettre les données série vers des services réseau.
* Utilisez `Debug Input` pour inspecter les charges utiles sortantes durant le développement.

## 🛠️ Dépannage

* Rien n'est envoyé : vérifiez que `Enable` est actif, que `Data` n'est pas vide et que `ConnId` référence une connexion active.
* L'appareil récepteur ignore les messages : vérifiez la `Line ending` choisie et essayez différentes options (LF, CRLF, CR ou none).
* Messages identiques non envoyés alors qu'attendus : confirmez que la `Send policy` est réglée sur `Always` si vous avez besoin d'envois répétés.
* Octets inattendus sur la ligne : assurez-vous que le `Data Type` correspond au format de la valeur fournie (par ex. utilisez `HexBytes` pour des chaînes hex ou `Bytes` pour des listes numériques).
