PySerial : guide complet pour la communication série (COM, USB) en Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 :

  1. Création de l'objet Serial — initialisation avec les paramètres du port
  2. Ouverture de la connexion — établissement de la liaison avec le périphérique
  3. Échange de données — envoi de commandes et lecture des réponses
  4. 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.

Recommendations