PySerial: Guia completo para trabalhar com portas COM e serial em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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:

  1. Criar o objeto Serial — inicialização com os parâmetros da porta
  2. Abrir a conexão — estabelecer comunicação com o dispositivo
  3. Trocar dados — enviar comandos e ler respostas
  4. 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.

Recommendations