Cookie
Electronic Team, Inc. uses cookies to personalize your experience on our website. By continuing to use this site, you agree to our cookie policy. Click here to learn more.

Portas Série no Linux - Guia Completo

Nikolai Svarachevsky Nikolai Svarachevsky
Atualizado: Aug 4, 2026

Aqui, pode aprender como ligar-se a um dispositivo série Linux, bem como uma forma simples de ligar dispositivos série conectados a um computador remoto. Vou usar como exemplo uma impressora de recibos compatível com ESC/POS.

Teste Gratuito de 14 dias disponível
O preço da licença começa em $259.95
Disponível para
usb para ambiente de trabalho remoto

Verificar as suas portas

As portas seriais são um tipo de dispositivo serial. O comando dmesg vai ajudá-lo a ver se um dispositivo serial foi detetado e reconhecido pelo sistema operativo. Se foi, ele será listado na saída deste comando.

Como o dmesg lista todos os dispositivos do sistema, vamos filtrar a saída através do grep. Ele procura no texto por linhas que contenham a palavra-chave fornecida. Os nomes das portas seriais no Linux começam com “ttyS”, por isso podemos usar isso como consulta. A saída do dmesg pode ser passada para o grep ligando os dois comandos com um pipe (o símbolo |). Também vai exigir privilégios de superutilizador, por isso é necessário adicionar sudo. O comando resultante fica assim:

sudo dmesg | grep tty
resultados da pesquisa do dmesg
Os dispositivos serão listados juntamente com os respetivos nomes de ficheiro de dispositivo. Estes são ficheiros em /dev, como ttyS0 e ttyS1, que podemos mais tarde usar como argumentos para outros comandos, para especificar com que porta série se deve interagir. Além disso, o dmesg pode indicar um problema técnico se o dispositivo não aparecer de todo.

Se estiver a usar adaptadores USB-para-série, eles aparecerão como dispositivos ttyUSB. Também podem ser encontrados no dmesg usando o mesmo comando.

Importante: para usar as portas série do sistema, um utilizador precisa de estar no grupo dialout. Embora isto não seja um problema para o primeiro utilizador predefinido, torna-se um quando se tenta aceder às portas série como outros utilizadores, aqueles que foram criados depois de o sistema ter sido instalado.

Por outras palavras, se encontrar o erro "Could not open serial port...", execute o seguinte comando:

sudo adduser your_user_name dialout

Substitua "your_user_name" pelo utilizador que tem dificuldade em aceder às portas.

Interagir com Dispositivos Seriais

Utilizando utilitários padrão

Como as portas seriais são representadas por ficheiros no Linux, utilitários padrão como echo e cat podem ser usados para interagir com elas. O stty pode ser usado para alterar as definições da porta. Vamos ver como cada uma destas aplicações é utilizada.

Com o stty, pode definir a taxa de baud da porta, a quantidade de bits de dados, a paridade, o tipo de handshake (também conhecido como controlo de fluxo) e outros parâmetros. Isto pode ser necessário para interagir com um dispositivo ou uma aplicação, uma vez que, na maioria das vezes, os parâmetros têm de corresponder para que a ligação funcione.

Nota do Nick:
Executei a seguinte demonstração no Debian 11 (Bullseye) com uma impressora SP-POS88VMF.
No entanto, também pode experimentar os comandos fornecidos com uma ligação null-modem entre duas portas seriais ou USB-para-serial no mesmo computador. Nesse caso, terá de modificar o comando cat para escutar a outra porta ligada, e não a que está a enviar.


Use o seguinte comando para listar as definições atuais da sua porta:

sudo stty -a -F <your port>
Ver as definições da porta com stty
E este é um comando de exemplo que define a taxa de baud da porta ttyS0 para 9600, os bits de dados para 8 e ativa o handshaking RTS/CTS:

sudo stty -F /dev/ttyS0 9600 cs8 crtscts

Com as definições corretas selecionadas, podemos enviar dados para o dispositivo com o echo. É possível enviar texto simples para uma porta série com o echo, assim:

echo 'TEXT' > /dev/ttyS0

No entanto, para fazer isto, é necessário iniciar sessão como superutilizador. Isto pode ser feito com o comando “su -”.

No nosso caso, são necessários símbolos ASCII especiais, como ESC e Carriage Return, para tirar o máximo partido da impressora ligada. Uma forma de fazer isto é usar o argumento -e do echo e sequências de escape. Uma sequência de escape para caracteres ASCII começa com \x, seguida de um número hexadecimal que corresponde ao carácter.
Por exemplo, é assim que a palavra “TEXT” pode ser impressa com sequências de escape:

echo -e '\x54\x45\x58\x54'

Vamos enviar as seguintes mensagens:

1B 40 (ESC @, Initialize)
1B 6D (ESC m, Full Cut)
4C 49 4E 45 20 31 ("LINE 1")
1B 21 80 (Enable Underline)
4C 49 4E 45 20 32 ("LINE 2")
0D 0A (CR LF, New Line)
1B 6D (Full Cut)


O argumento -e é necessário para permitir as sequências de escape hexadecimais “\x”. É assim que fica no terminal e na impressão resultante:
Comandos da impressora via echo e impressão de resultados
Embora o echo possa ser usado para enviar dados através de uma ligação serial, o cat pode ser usado para os receber. No nosso caso, a impressora irá responder a pedidos ESC/POS padrão de estado e informações de ID. Isto significa que teremos de capturar as respostas. Primeiro, iremos iniciar o cat, a escutar o dispositivo ttyS0 e a redirecionar a saída para um ficheiro de texto:

cat /dev/ttyS0 > examplefile

A aplicação tem de continuar em execução para receber dados, por isso é necessário abrir uma nova janela ou separador do Terminal para enviar pedidos ao nosso dispositivo. Iremos usar o echo para enviar o seguinte:

1D 49 31 (Request model ID)
1D 49 32 (Request type ID)
Como as respostas serão fornecidas em formato hexadecimal, a saída direta de cat, que foi registada em “examplefile”, não será legível para humanos. Em vez disso, iremos passar o ficheiro por hexdump:
Pedido e resposta da impressora

Usar o gtkterm

O Linux também fornece terminais seriais como o minicom e o gtkterm que conseguem interagir de forma abrangente com portas seriais, lidando tanto com entrada como com saída, oferecendo mais opções de formatação e tornando tudo mais fácil no geral.

Como exemplo, vamos experimentar o gtkterm. De forma semelhante ao stty, o gtkterm precisa de ser iniciado com argumentos de linha de comandos para especificar as definições de ligação, se as predefinições não forem adequadas.

Nota do Nick:
Embora o Minicom seja uma ferramenta altamente flexível, os controlos complicados tornam-no inadequado para utilização por principiantes e difícil de abordar num guia rápido. Se quiser começar a aprender sobre o Minicom, comece pela sua página man para evitar ficar confuso assim que iniciar a aplicação.

Interface do GTKTerm
Algumas opções úteis incluem eco local (para duplicar os dados que envia do seu lado), registo, visualização hexadecimal e envio de dados hex. Além disso, repare nos indicadores no canto inferior direito - mostram os estados das linhas de sinal DTR, RTS, CD, DSR e RI - é outra forma de ver que o dispositivo está ligado e preparado para receber dados.
Menu de configuração e indicadores de handshake no GTKTerm

Ligar a uma Porta Série na Sua Rede Local

Em alguns casos, um dispositivo serial precisa de ser partilhado entre vários computadores, ou pode querer substituir uma ligação serial física entre dois computadores por uma virtual. Um dos meus projetos - Serial to Ethernet Connector - é uma forma eficiente de o fazer. Para além de disponibilizar portas físicas numa rede local, a aplicação pode criar portas virtuais às quais as aplicações podem aceder.

O Serial to Ethernet Connector pode ser configurado rapidamente e tem uma interface de linha de comandos que facilita a integração num fluxo de trabalho no Terminal ou em scripts bash. Documentação detalhada, guias do utilizador e especialistas de suporte ao cliente estarão disponíveis para ajudar. Além disso, existe uma Avaliação Gratuita de 15 dias disponível, pelo que recomendo vivamente que experimente.

Como Utilizar um Serial to Ethernet Connector

1
Registe-se para uma avaliação gratuita nesta página. Aguarde que a chave de ativação chegue à sua caixa de correio.
Registe-se para uma avaliação gratuita
2
Aceda ao Centro de Transferências. Escolha o instalador correto para a sua distribuição Linux e arquitetura.
Ir para o Centro de Transferências
3
Abra o seu Terminal, navegue até ao ficheiro e utilize os seguintes comandos em sistemas baseados em Debian (irá precisar de acesso de superutilizador):

dpkg -i serial_ethernet_connector_64.deb
apt-get install -f


Ou este comando no Fedora ou CentOS:

sudo rpm -i serial_ethernet_connector_64.rpm

Assim que a instalação estiver concluída, reinicie o seu computador.
4
Utilize o seu código de ativação executando o seguinte comando:

evesecli register <your activation code>

A ativação pode ser verificada executando:

evesecli license

Estes passos de instalação e ativação terão de ser concluídos em ambas as máquinas que serão ligadas.
Utilize o seu código de ativação
5
Uma vez que iremos enviar mensagens entre duas aplicações, iremos criar portas virtuais tanto para o servidor como para o cliente. Comece por usar o seguinte comando no servidor:

evesecli add -v /tmp/ttyLS0 server --local 5000

O comando “start” irá abrir a ligação:

evesecli start /tmp/ttyLS0

Além disso, terá de saber o endereço IP do seu computador na rede local. Execute “hostname -I” (i maiúsculo).
criar portas virtuais tanto para o servidor como para o cliente
6
No computador cliente, execute o seguinte:

evesecli add -v /tmp/ttyRS0 client --remote <your IP address>:5000
evesecli start /tmp/ttyRS0


Pode verificar se a ligação foi bem-sucedida usando “evesecli list”. Deve mostrar que existe 1 ligação.
verifique se a ligação foi bem-sucedida
7
Finalmente, uma vez que as portas ligadas são ambas virtuais, podem ser testadas, como anteriormente, com cat/echo.
como as portas ligadas são ambas virtuais, podem ser testadas
Não se esqueça de que pode utilizar “man evesecli” para obter mais informações sobre as opções e comandos disponíveis. Além disso, existe um guia do utilizador que pode ser consultado para exemplos e informações gerais sobre a utilização do Serial to Ethernet Connector.

As Minhas Credenciais

Sou Nikolai Svarachevsky — um programador sénior empregado na Electronic Team, Inc. Sou programador principal em vários projetos, incluindo o Serial to Ethernet Connector. Escrevi código de nível comercial para fins de comunicação serial, redes e encriptação. Além disso, sou um utilizador avançado de Linux e adoro encontrar novas formas de usar tanto utilitários integrados como software de terceiros para resolver problemas, sejam simples ou complexos! Espero que este guia lhe seja útil.
Serial to Ethernet Connector
Access remote serial port over IP Network for Windows
Teste Gratuito de 14 dias disponível
O preço da licença começa em $259.95
Disponível para