qual é a maneira mais fácil de configurar a porta serial no Linux?

13

No prompt de comando do Windows para configurar uma porta serial, posso usar de maneira simples:

mode com1: 9600,n,8,1

ou para ler a configuração:

mode com1:

Existem comandos semelhantes no Linux? Qual seria a maneira mais fácil de encontrar e configurar a porta serial no Linux?

Hrvoje T
fonte
Normalmente, você pode editá-lo direito nos aplicativos que você usa para acessar a série como, por exemplo, screen /dev/ttyS0 <baud-rate>(o padrão seria 9600, não importa o que as configurações de todo o sistema, nem mesmo certeza tais existem)
PHK
Preciso configurá-lo para usar uma impressora POS.
precisa
OK, nesse caso, tente os sttycomandos mencionados em: wiki.openwrt.org/doc/recipes/serialbaudratespeed
phk

Respostas:

27

Você pode usar o sttycomando para definir esses parâmetros.

Isso mostrará todas as configurações na primeira porta serial (substitua ttyS0por ttyUSB0se estiver usando uma porta serial USB):

stty -F /dev/ttyS0 -a

Isso definirá a taxa de transmissão para 9600, 8 bits, 1 bit de parada, sem paridade:

stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb

Uma coisa que geralmente confunde as pessoas é que a maioria dos drivers seriais redefinirá as configurações para os padrões assim que o dispositivo for fechado (ou seja, nenhum processo abrirá mais o dispositivo). Portanto, o sttycomando acima definirá as configurações e, quando terminar, o driver as redefinirá novamente. Se o seu software POS abrir o dispositivo pela primeira vez e depois executar as sttyconfigurações, eles deverão permanecer até o software POS fechar o dispositivo novamente (por exemplo, ao sair).

Eu teria pensado que o software POS deveria ter alguma maneira de definir essas configurações por conta própria. Se você estiver escrevendo seu próprio software para acionar a impressora, abra o dispositivo primeiro e execute o sttycomando.

Você também pode precisar brincar com outras configurações, por exemplo, opostsignifica que o pós-processamento de saída será executado. Se oposte onlcrestiverem ambos definidos, isso onlcrfará com que um retorno de carro extra (0xd) seja adicionado quando um byte de nova linha (0xa) for gerado, normalmente para impedir a impressão de escadas, como

This is a line
              This is the next line

Isso pode ou não ser o que você deseja. Se você deseja que uma saída individual bruta para a impressora seja opostdesligada (adicione -opostaos sttyparâmetros).

O handshaking (controle de fluxo) também é controlado com stty, sem saber mais sobre a impressora, não sei dizer se você precisa definir alguma coisa.

Verifique a página de sttymanual para obter mais informações.

Wurtel
fonte