PySerial: cómo trabajar con puertos COM y seriales en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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:

  1. Crear un objeto Serial — inicialización con los parámetros del puerto
  2. Abrir la conexión — establecer comunicación con el dispositivo
  3. Intercambiar datos — enviar comandos y leer respuestas
  4. 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

Recommendations