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

# Serial Read

Cette fonction lit la dernière ligne disponible d'une connexion série (sans bloquer) et la convertit dans un type de donnée choisi. Elle est conçue pour être robuste face aux entrées obsolètes ou mal formées en renvoyant une valeur par défaut définie par l'utilisateur lorsque nécessaire.

## 📥 Entrées <a href="#inputs" id="inputs"></a>

* `Enable` Entrée booléenne qui active ou désactive la lecture.
* `ConnId` Entrée générique qui sélectionne la connexion série à lire (identifiant de connexion).

## 📤 Sorties <a href="#outputs" id="outputs"></a>

* `Data` Sortie générique qui émet la dernière valeur convertie (ou la valeur par défaut lorsque les données sont obsolètes ou la conversion a échoué).

## 🕹️ Contrôles <a href="#controls" id="controls"></a>

* `Stale timeout (s)` Champ texte pour définir combien de temps attendre une nouvelle ligne avant de considérer la lecture comme obsolète.
* `Data Type` Menu déroulant pour choisir le type de conversion des lignes entrantes. Options disponibles : `String`, `Int`, `Float`, `Boolean`, `HexInt`, `Bytes`.
* `Default (on stale/parse fail)` Champ texte fournissant la valeur de secours renvoyée lorsqu'il n'y a pas de données fraîches ou que la conversion échoue. Pour `Bytes`, saisir des caractères hexadécimaux (ex. `AA55`).

## 🎯 Fonctionnalités <a href="#features" id="features"></a>

* Lecture non bloquante de la dernière ligne disponible.
* Détection des données obsolètes pour éviter de propager des valeurs anciennes indéfiniment.
* Plusieurs types de conversion avec une valeur de secours configurable.
* Entrées et sorties simples pour s'intégrer facilement dans des scénarios plus larges.

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

1. Fournissez un identifiant de connexion à `ConnId` correspondant à une connexion série active.
2. Utilisez `Enable` pour démarrer ou arrêter la lecture sans retirer le bloc.
3. Réglez `Stale timeout (s)` pour définir la durée pendant laquelle les données sont considérées comme fraîches.
4. Choisissez le `Data Type` souhaité pour convertir les lignes entrantes.
5. Définissez `Default (on stale/parse fail)` pour contrôler la sortie lorsque les données sont absentes ou non convertibles.
6. Utilisez la sortie `Data` dans des blocs suivants pour journalisation, affichage ou publication.

## 📊 Évaluation <a href="#evaluation" id="evaluation"></a>

* Lorsque le bloc est activé, il tente de lire la dernière ligne de la connexion sélectionnée.
* Si aucune nouvelle ligne n'arrive dans le délai défini par `Stale timeout (s)`, le bloc émet la valeur par défaut configurée.
* Si la conversion vers le type choisi échoue, le bloc émet la valeur par défaut configurée.
* Pour le type `Bytes`, le bloc interprète la valeur par défaut comme du texte hexadécimal.

## 💡 Astuces <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Utilisez `Debug Input` pour enregistrer ou inspecter les résultats bruts pendant le développement.
* Transférez les lectures série vers `Data to JSON` ou `CSV Export` pour un journal structuré ou une exportation par lots.
* Publiez les valeurs traitées avec `MQTT Publish` ou envoyez-les à un service web via `REST API - Post`.
* Stockez les valeurs pour une utilisation ultérieure avec `Data Write Local` ou `Data Write Global` et récupérez-les avec les blocs de lecture correspondants.
* Tracez des données numériques en temps réel avec `Scope` pour observer des tendances ou anomalies.
* Combinez avec `Logic Input` ou des blocs de comparaison pour déclencher des actions en fonction des valeurs entrantes (par exemple, alarme lorsqu'une valeur dépasse un seuil).

## 🛠️ Dépannage <a href="#troubleshooting" id="troubleshooting"></a>

* Si aucune donnée n'apparaît sur `Data`, vérifiez que le `ConnId` fourni correspond à une connexion active.
* Si la sortie est toujours la valeur par défaut, augmentez `Stale timeout (s)` ou assurez-vous que la source envoie effectivement des lignes.
* Si la conversion échoue pour un type numérique ou booléen, vérifiez le format texte brut renvoyé par l'appareil et ajustez la valeur par défaut en conséquence.
* Pour le type `Bytes`, assurez-vous que la valeur par défaut est fournie en caractères hexadécimaux valides (sans espaces ni caractères non hexadécimaux).
