PySerial: COM-Port-Kommunikation mit Python meistern

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Die Arbeit mit seriellen Schnittstellen ist in der Industrie, im IoT, in der Robotik und bei Mikrocontrollern nach wie vor unverzichtbar. Die Steuerung von Geräten über COM (RS-232/RS-485/USB-Serial) erfordert ein stabiles, plattformunabhängiges und flexibles Werkzeug. In Python ist die Bibliothek PySerial die Lösung der Wahl.

PySerial bietet eine einfache und leistungsstarke Schnittstelle zum Verbinden, Konfigurieren und Übertragen von Daten über serielle Leitungen. Sie wird für die Kommunikation mit Arduino, Raspberry Pi, Modems, GPS-Empfängern, Controllern, Sensoren und vielen anderen Geräten eingesetzt.

Über die PySerial-Bibliothek

PySerial ist eine plattformübergreifende Python-Bibliothek für die Arbeit mit seriellen Schnittstellen. Entwickelt von Chris Liechti, hat sie sich zum De-facto-Standard für die serielle Kommunikation im Python-Ökosystem entwickelt. Die Bibliothek unterstützt Windows, Linux, macOS und viele weitere Betriebssysteme.

Hauptfunktionen von PySerial

Die Bibliothek bietet eine einheitliche API für die Arbeit mit verschiedenen Arten von seriellen Verbindungen. Sie behandelt automatisch plattformspezifische Besonderheiten der Port-Ansteuerung und bietet dem Entwickler eine einfache Schnittstelle.

PySerial unterstützt nicht nur physische COM-Ports, sondern auch virtuelle Verbindungen, darunter USB-to-Serial-Adapter, Bluetooth Serial Port Profile und sogar Netzwerkverbindungen über das RFC2217-Protokoll.

Installation und Einbindung

Die Installation der Bibliothek erfolgt über den Paketmanager pip:

pip install pyserial

Um die Bibliothek in ein Python-Skript einzubinden, wird der Standard-Import verwendet:

import serial

Grundlegende Architektur

Lebenszyklus einer Verbindung

Die typische Arbeit mit PySerial folgt einem einfachen Schema:

  1. Serial-Objekt erstellen — Initialisierung mit den Port-Parametern
  2. Verbindung öffnen — Aufbau der Kommunikation mit dem Gerät
  3. Daten austauschen — Senden von Befehlen und Lesen von Antworten
  4. Verbindung schließen — Korrekter Abschluss der Arbeit
ser = serial.Serial('COM3', baudrate=9600, timeout=1)
ser.write(b'command')
data = ser.readline()
ser.close()

Wichtige Konfigurationsparameter

Beim Erstellen eines Serial-Objekts können viele Parameter festgelegt werden:

  • port — Gerätename (COM1, /dev/ttyUSB0, /dev/ttyAMA0)
  • baudrate — Datenübertragungsrate (üblich: 9600, 38400, 115200)
  • bytesize — Zeichengröße in Bits (5, 6, 7, 8)
  • parity — Paritätskontrolle (PARITY_NONE, PARITY_EVEN, PARITY_ODD)
  • stopbits — Anzahl der Stoppbits (1, 1.5, 2)
  • timeout — Timeout für Leseoperationen in Sekunden

Methoden zum Lesen von Daten

Basis-Lesemethoden

PySerial bietet mehrere Möglichkeiten, Daten aus dem Port zu lesen:

Serial.read(size=1) — Liest eine genau angegebene Anzahl von Bytes. Wenn nicht genügend Daten vorhanden sind, blockiert die Methode, bis alle Bytes empfangen wurden oder der Timeout abläuft.

data = ser.read(10)  # 10 Bytes lesen

Serial.readline() — Liest Daten bis zum Zeilenumbruch (\n). Die beliebteste Methode für textbasierte Protokolle.

line = ser.readline().decode('utf-8').strip()

Serial.read_all() — Liest sofort alle verfügbaren Daten aus dem Eingangspuffer.

all_data = ser.read_all()

Fortgeschrittene Lesemethoden

Serial.read_until(expected) — Liest Daten, bis ein bestimmtes Zeichen oder eine Zeichenfolge gefunden wird.

Empfehlungen