Introducción
Trabajar con puertos seriales sigue siendo fundamental en sistemas industriales, IoT, robótica y microcontroladores. Controlar dispositivos a través de COM (RS-232/RS-485/USB-Serial) requiere una herramienta estable, multiplataforma y flexible. En Python, esa solución es la biblioteca PySerial.
PySerial ofrece una interfaz simple y potente para conectar, configurar y transferir datos a través de líneas seriales. Se utiliza para comunicarse con Arduino, Raspberry Pi, módems, receptores GPS, controladores, sensores y muchos otros dispositivos.
Acerca de la biblioteca PySerial
PySerial es una biblioteca Python multiplataforma para trabajar con puertos seriales. Desarrollada por Chris Liechti, se ha convertido en el estándar de facto para comunicaciones seriales en el ecosistema Python. La biblioteca es compatible con Windows, Linux, macOS y muchos otros sistemas operativos.
Características clave de PySerial
La biblioteca proporciona una API unificada para trabajar con diferentes tipos de conexiones seriales. Maneja automáticamente las particularidades específicas de cada plataforma al trabajar con puertos, ofreciendo al desarrollador una interfaz sencilla.
PySerial no solo admite puertos COM físicos, sino también conexiones virtuales, incluidos adaptadores USB-to-Serial, Bluetooth Serial Port Profile e incluso conexiones de red a través del protocolo RFC2217.
Instalación y configuración
La instalación de la biblioteca se realiza mediante el gestor de paquetes pip:
pip install pyserial
Para usar la biblioteca en un script de Python, se importa de forma estándar:
import serial
Arquitectura básica de trabajo
Ciclo de vida de la conexión
El trabajo típico con PySerial sigue un esquema simple:
- Crear un objeto Serial — inicialización con los parámetros del puerto
- Abrir la conexión — establecer comunicación con el dispositivo
- Intercambiar datos — enviar comandos y leer respuestas
- Cerrar la conexión — finalizar correctamente la comunicación
ser = serial.Serial('COM3', baudrate=9600, timeout=1)
ser.write(b'comando')
datos = ser.readline()
ser.close()
Parámetros principales de configuración
Al crear un objeto Serial se pueden definir múltiples parámetros:
- port — nombre del dispositivo (COM1, /dev/ttyUSB0, /dev/ttyAMA0)
- baudrate — velocidad de transmisión (normalmente 9600, 38400, 115200)
- bytesize — tamaño del carácter en bits (5, 6, 7, 8)
- parity — control de paridad (PARITY_NONE, PARITY_EVEN, PARITY_ODD)
- stopbits — número de bits de parada (1, 1.5, 2)
- timeout — tiempo de espera para operaciones de lectura en segundos
Métodos de lectura de datos
Métodos básicos de lectura
PySerial ofrece varias formas de leer datos desde el puerto:
Serial.read(size=1) — lee exactamente la cantidad de bytes indicada. Si no hay suficientes datos, el método se bloquea hasta recibir todos los bytes o hasta que expire el tiempo de espera.
datos = ser.read(10) # Leer 10 bytes
Serial.readline() — lee datos hasta el carácter de nueva línea (\n). Es el método más popular para protocolos de texto.
linea = ser.readline().decode('utf-8').strip()
Serial.read_all() — lee todos los datos disponibles del búfer de entrada de inmediato.
todos_los_datos = ser.read_all()
Métodos avanzados de lectura
Serial.read_until(expected) — lee datos hasta encon
También en la biblioteca
Pruebas en Go (Golang): frameworks y herramientas — guía completa
Chalk para JavaScript (Node.js): guía completa con ejemplos
SnapKit para Swift: guía completa con ejemplos
Laravel Framework para PHP: guía completa con ejemplos