Introdução
Trabalhar com portas seriais continua sendo essencial em sistemas industriais, IoT, robótica e microcontroladores. Controlar dispositivos via COM (RS-232/RS-485/USB-Serial) exige uma ferramenta estável, multiplataforma e flexível. No Python, essa solução é a biblioteca PySerial.
PySerial oferece uma interface simples e poderosa para conectar, configurar e transferir dados por linhas seriais. Ela é usada para comunicação com Arduino, Raspberry Pi, modems, receptores GPS, controladores, sensores e muitos outros equipamentos.
Sobre a biblioteca PySerial
PySerial é uma biblioteca Python multiplataforma para trabalhar com portas seriais. Criada por Chris Liechti, tornou-se o padrão de fato para comunicação serial no ecossistema Python. A biblioteca suporta Windows, Linux, macOS e diversos outros sistemas operacionais.
Principais recursos do PySerial
A biblioteca fornece uma API unificada para trabalhar com diferentes tipos de conexões seriais. Ela lida automaticamente com particularidades específicas de cada plataforma e oferece ao desenvolvedor uma interface simples.
PySerial suporta não apenas portas COM físicas, mas também conexões virtuais, incluindo adaptadores USB-to-Serial, Bluetooth Serial Port Profile e até conexões de rede via protocolo RFC2217.
Instalação e configuração
A instalação da biblioteca é feita pelo gerenciador de pacotes pip:
pip install pyserial
Para usar a biblioteca em um script Python, faça a importação padrão:
import serial
Arquitetura básica de funcionamento
Ciclo de vida da conexão
O trabalho típico com PySerial segue um esquema simples:
- Criar o objeto Serial — inicialização com os parâmetros da porta
- Abrir a conexão — estabelecer comunicação com o dispositivo
- Trocar dados — enviar comandos e ler respostas
- Fechar a conexão — encerrar corretamente a comunicação
ser = serial.Serial('COM3', baudrate=9600, timeout=1)
ser.write(b'comando')
dados = ser.readline()
ser.close()
Principais parâmetros de configuração
Ao criar o objeto Serial, você pode definir vários parâmetros:
- port — nome do dispositivo (COM1, /dev/ttyUSB0, /dev/ttyAMA0)
- baudrate — taxa de transmissão (geralmente 9600, 38400, 115200)
- bytesize — tamanho do caractere em bits (5, 6, 7, 8)
- parity — controle de paridade (PARITY_NONE, PARITY_EVEN, PARITY_ODD)
- stopbits — número de bits de parada (1, 1.5, 2)
- timeout — tempo limite para operações de leitura em segundos
Métodos de leitura de dados
Métodos básicos de leitura
PySerial oferece várias formas de ler dados da porta:
Serial.read(size=1) — lê exatamente a quantidade especificada de bytes. Se não houver dados suficientes, o método bloqueia até receber todos os bytes ou até o tempo limite expirar.
dados = ser.read(10) # Ler 10 bytes
Serial.readline() — lê dados até o caractere de nova linha (\n). É o método mais popular para protocolos de texto.
linha = ser.readline().decode('utf-8').strip()
Serial.read_all() — lê imediatamente todos os dados disponíveis no buffer de entrada.
todos_dados = ser.read_all()
Métodos avançados de leitura
Serial.read_until(expected) — lê dados até encontrar a sequência esperada.
Também na biblioteca
Trabalho com CSV em Java: guia completo de leitura e escrita
Symfony/Mailer PHP: guia completo com exemplos práticos
Trabalhando com YAML em Java: bibliotecas SnakeYAML e Jackson
Configuração de aplicações em Go: melhores práticas e ferramentas
golangci-lint para Go: guia completo com exemplos práticos