Você pode usar o comando stty
para definir esses parâmetros.
Isso mostrará todas as configurações na primeira porta serial (substitua ttyS0
por ttyUSB0
se estiver usando uma porta serial USB):
stty -F /dev/ttyS0 -a
Isto irá 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 irá redefinir as configurações para os padrões assim que o dispositivo for fechado (ou seja, nenhum processo abre o dispositivo). Portanto, o comando stty
acima definirá as configurações e, quando isso for feito, o driver as redefinirá novamente. Se primeiro você tiver o seu software de PDV aberto o dispositivo e, em seguida, executar as configurações de stty
, ele deverá permanecer até que seu software de POS feche o dispositivo novamente (por exemplo, ao sair).
Eu teria pensado que o software POS deveria ter alguma maneira de configurar essas configurações por conta própria. Se você estiver criando seu próprio software para conduzir a impressora, primeiro abra o dispositivo e execute o comando stty
.
Você também pode precisar brincar com outras configurações, por exemplo, opost
significa que o pós-processamento de saída será executado. Se opost
e onlcr
estiverem definidos, o onlcr
fará com que um retorno de carro extra (0xd) seja adicionado quando um byte de nova linha (0xa) for emitido, normalmente para impedir a impressão em escada, como
This is a line
This is the next line
Isso pode ou não ser o que você deseja. Se você quiser uma saída bruta de um para um para a impressora, desligue opost
(adicione -opost
aos parâmetros stty
).
Handshaking (controle de fluxo) também é controlado com stty
, sem saber mais sobre a impressora Não sei dizer se você precisa definir nada.
Verifique a stty
manpage para mais informações.