Introduction
La communication avec les ports série reste essentielle dans les systèmes industriels, IoT, robotiques et basés sur des microcontrôleurs. Piloter des périphériques via COM (RS-232/RS-485/USB-Série) nécessite un outil stable, multiplateforme et flexible. En Python, la solution de référence est la bibliothèque PySerial.
PySerial offre une interface simple et puissante pour connecter, configurer et échanger des données sur des liaisons série. Elle est utilisée pour dialoguer avec Arduino, Raspberry Pi, modems, récepteurs GPS, contrôleurs, capteurs et bien d'autres équipements.
À propos de la bibliothèque PySerial
PySerial est une bibliothèque Python multiplateforme dédiée à la communication série. Développée par Chris Liechti, elle est devenue le standard de facto pour les communications série dans l'écosystème Python. La bibliothèque prend en charge Windows, Linux, macOS et de nombreux autres systèmes d'exploitation.
Fonctionnalités clés de PySerial
La bibliothèque fournit une API unifiée pour travailler avec différents types de connexions série. Elle gère automatiquement les spécificités propres à chaque plateforme pour l'accès aux ports, offrant au développeur une interface simple.
PySerial prend en charge non seulement les ports COM physiques, mais aussi les connexions virtuelles, notamment les adaptateurs USB-Série, le profil Bluetooth Serial Port, et même les connexions réseau via le protocole RFC2217.
Installation et importation
L'installation de la bibliothèque se fait via le gestionnaire de paquets pip :
pip install pyserial
Pour importer la bibliothèque dans un script Python, utilisez l'import standard :
import serial
Architecture de base
Cycle de vie d'une connexion
L'utilisation typique de PySerial suit un schéma simple :
- Création de l'objet Serial — initialisation avec les paramètres du port
- Ouverture de la connexion — établissement de la liaison avec le périphérique
- Échange de données — envoi de commandes et lecture des réponses
- Fermeture de la connexion — arrêt correct de la communication
ser = serial.Serial('COM3', baudrate=9600, timeout=1)
ser.write(b'commande')
donnees = ser.readline()
ser.close()
Paramètres de configuration principaux
Lors de la création de l'objet Serial, vous pouvez définir de nombreux paramètres :
- port — nom du périphérique (COM1, /dev/ttyUSB0, /dev/ttyAMA0)
- baudrate — vitesse de transmission (généralement 9600, 38400, 115200)
- bytesize — taille du caractère en bits (5, 6, 7, 8)
- parity — contrôle de parité (PARITY_NONE, PARITY_EVEN, PARITY_ODD)
- stopbits — nombre de bits d'arrêt (1, 1.5, 2)
- timeout — délai d'attente pour les opérations de lecture en secondes
Méthodes de lecture des données
Méthodes de lecture de base
PySerial propose plusieurs façons de lire les données depuis le port :
Serial.read(size=1) — lit exactement le nombre d'octets spécifié. Si les données sont insuffisantes, la méthode se bloque jusqu'à la réception de tous les octets ou l'expiration du délai d'attente.
donnees = ser.read(10) # Lire 10 octets
Serial.readline() — lit les données jusqu'au caractère de nouvelle ligne (\n). C'est la méthode la plus populaire pour les protocoles textuels.
ligne = ser.readline().decode('utf-8').strip()
Serial.read_all() — lit immédiatement toutes les données disponibles dans le tampon d'entrée.
toutes_les_donnees = ser.read_all()
Méthodes de lecture avancées
Serial.read_until(expected) — lit les données jusqu'à ce qu'une séquence spécifique soit trouvée.
Aussi dans la bibliothèque
Mise en cache en C++ : Redis, Memcached et solutions intégrées
Jetons JWT en Rust : bibliothèque jsonwebtoken et gestion de l'authentification
Colly pour Go : guide complet avec exemples
Utilisation de GraphQL en Swift : bibliothèques Apollo et Relay pour iOS/macOS