# AILA SERIAL PRO

**Universal Serial Diagnostic Tool — v1.0.2**

Version 1.0.1 améliore la réception continue à haut débit : traitement par lots, console/historique bornés et journal quotidien optimisé.

Version 1.0.2 améliore la compatibilité CH340/FTDI/Prolific/CP210x : le port est ouvert avant tout accès DTR/RTS ou lecture des lignes modem. Les LEDs deviennent grises si ces diagnostics optionnels ne sont pas supportés, sans interrompre la connexion. Les exceptions complètes sont enregistrées dans `%LOCALAPPDATA%\AILA SERIAL PRO\Logs\diagnostic-AAAA-MM-JJ.log`.

AILA SERIAL PRO est une application Windows gratuite destinée aux techniciens, automaticiens, intégrateurs et ingénieurs qui doivent diagnostiquer des équipements série RS232, RS422, RS485 ou Virtual COM.

Elle fonctionne avec les balances industrielles, lecteurs code-barres, imprimantes, automates, capteurs, afficheurs, modems industriels et convertisseurs USB/Ethernet-série dès lors qu’ils sont exposés à Windows comme un port COM.

## Fonctions

- détection et rafraîchissement des ports COM ;
- 1200 à 115200 bauds, 7/8 bits, parité None/Even/Odd, 1/2 stop bits ;
- contrôle de flux None, RTS/CTS ou XON/XOFF ;
- terminal temps réel ASCII, HEX ou ASCII + HEX ;
- commandes manuelles et boutons rapides personnalisables ;
- terminaisons None, CR, LF et CRLF ;
- compteurs TX/RX, dernière réception et durée de connexion ;
- voyants CTS, DSR, DCD, RTS et DTR ;
- activation manuelle de RTS et DTR ;
- Auto Scan baudrate/parité/stop bits ;
- profils Generic, Balance, Scanner, Printer, PLC et Custom ;
- extraction numérique/poids optionnelle (`kg`, `g`, `lb`) ;
- prise en charge des chiffres de vérification entre parenthèses, par exemple `15.(0) g` → `15.0 g` ;
- historique local, journal quotidien et exports TXT/CSV/JSON ;
- aide DB9 câble droit/null modem et activité des pins ;
- POST HTTP avec URL, headers et JSON personnalisables ;
- sauvegarde automatique des paramètres dans `%LOCALAPPDATA%\AILA SERIAL PRO`.

## Démarrage rapide

1. Brancher l’adaptateur ou le périphérique et cliquer sur **Refresh ports**.
2. Choisir un profil puis le port COM et les paramètres série.
3. Cliquer sur **Connect**.
4. Le message `COM opened. Waiting for data…` confirme uniquement que Windows a ouvert le port.
5. Déclencher l’émission du périphérique ou envoyer une commande.
6. Contrôler simultanément l’ASCII, le HEX, les compteurs et les lignes matérielles.

Si aucune donnée n’arrive, vérifier le type de câble, le baudrate, le contrôle de flux et les réglages de sortie du périphérique.

## Statuts de connexion

- `COM opened. Waiting for data…` : le port est ouvert, sans conclusion sur la présence physique d’un appareil ;
- `Access denied / occupied` : port utilisé par un autre logiciel ou accès refusé ;
- `COM port not found` : port absent ou débranché ;
- `No signal received` : port toujours ouvert, mais aucun octet reçu dans le délai ;
- `No response from device` : aucune donnée reçue après une commande transmise.

## Auto Scan

L’Auto Scan teste les vitesses `9600, 4800, 19200, 38400, 57600, 115200, 2400, 1200`, les parités None/Even/Odd et 1/2 stop bits. Il s’arrête lorsqu’une trame ASCII plausible ou une valeur reconnue est reçue.

Un port série ne permet pas de prouver automatiquement que le décodage est correct. Toujours vérifier visuellement la trame avant de sauvegarder le profil.

## Profils exemples

- [`Examples/industrial-balance-profile.json`](Examples/industrial-balance-profile.json) : balance RS232 9600 8N1, commandes P/S/SI/W et parsing activé ;
- [`Examples/barcode-scanner-profile.json`](Examples/barcode-scanner-profile.json) : scanner ASCII 9600 8N1 ;
- [`Examples/crm-api-example.json`](Examples/crm-api-example.json) : exemple de POST CRM.

Les profils créés dans l’application enregistrent le nom du périphérique, son type, les paramètres série, les commandes rapides, le format attendu et l’état du parseur numérique.

## API / CRM

Les headers sont saisis un par ligne :

```text
Authorization: Bearer YOUR_TOKEN
X-Site: WORKSHOP-01
```

Variables utilisables dans le modèle JSON :

```json
{
  "device_name": "{device_name}",
  "profile": "{profile}",
  "raw_data": "{raw_data}",
  "parsed_value": "{parsed_value}",
  "unit": "{unit}",
  "timestamp": "{timestamp}"
}
```

Le bouton **Test API** envoie une charge de test. **Send latest data** transmet la dernière trame reçue.

## Câblage

RS232 DB9 classique :

```text
Câble droit :  2 → 2, 3 → 3, 5 → 5
Null modem :   2 → 3, 3 → 2, 5 → 5
```

Beaucoup d’équipements industriels exigent un câble croisé/null modem. La continuité électrique ne peut pas être mesurée par le logiciel : utiliser un multimètre ou un testeur DB9.

Pour RS422/RS485, les désignations A/B et TX±/RX± ne sont pas universelles. Consulter impérativement le manuel du convertisseur.

## Compiler avec Visual Studio 2022

Prérequis : charge de travail **Développement Desktop .NET** et SDK .NET 8.

1. Ouvrir `AILASerialPro.csproj` dans Visual Studio.
2. Restaurer les packages NuGet.
3. Choisir `Release` et `x64` ou `Any CPU`.
4. Compiler.

En PowerShell :

```powershell
dotnet restore
dotnet build -c Release
```

## Publication autonome Windows x64

```powershell
.\publish.ps1
```

Le dossier `publish-win-x64` peut être copié sur un PC Windows sans runtime .NET préinstallé.

## Données locales

- paramètres : `%LOCALAPPDATA%\AILA SERIAL PRO\settings.json` ;
- logs : `%LOCALAPPDATA%\AILA SERIAL PRO\Logs\serial-AAAA-MM-JJ.log`.

Les tokens API sont enregistrés localement si l’utilisateur les place dans les headers. Protéger le compte Windows et utiliser des tokens limités/révocables.

## Support

Developer: **Amine Aila**  
Support: [buymeacoffee.com/amineaila](https://buymeacoffee.com/amineaila)

> This software is free. If it saved you time or helped you solve a problem, you can support the development by buying me a coffee.

Le soutien est entièrement facultatif et ne débloque aucune fonctionnalité.
