Какой самый простой способ настроить последовательный порт в Linux?

13

В командной строке Windows для настройки последовательного порта я могу просто использовать:

mode com1: 9600,n,8,1

или прочитать конфигурацию:

mode com1:

Есть ли похожие команды в Linux? Какой самый простой способ найти и настроить последовательный порт в Linux?

Хрвое Т
источник
Обычно вы можете отредактировать его прямо в приложениях, которые вы используете для доступа к последовательному порту, например, например screen /dev/ttyS0 <baud-rate>(по умолчанию будет 9600, независимо от того, какие настройки в системе, даже не уверены, что такие существуют)
phk
Мне нужно настроить его для использования принтера POS.
Hrvoje T
Хорошо, в этом случае попробуйте sttyкоманды, упомянутые по адресу: wiki.openwrt.org/doc/recipes/serialbaudratespeed
phk

Ответы:

27

Вы можете использовать sttyкоманду для установки таких параметров.

Это покажет все настройки первого последовательного порта (замените ttyS0с , ttyUSB0если с помощью USB последовательного порта):

stty -F /dev/ttyS0 -a

Это установит скорость передачи 9600, 8 бит, 1 стоповый бит, без контроля четности:

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

Одна вещь, которая обычно смущает людей, состоит в том, что большинство драйверов последовательного интерфейса сбрасывают настройки до значений по умолчанию, как только устройство закрывается (т.е. ни один процесс больше не открывает устройство). Таким образом, приведенная выше sttyкоманда установит настройки, а затем, когда это будет сделано, драйвер снова их сбросит. Если вы сначала открыли устройство программным обеспечением POS, а затем выполнили sttyнастройки, они должны оставаться на месте, пока программное обеспечение POS снова не закроет устройство (например, при выходе).

Я бы подумал, что программное обеспечение POS должно иметь какой-то способ настройки этих параметров самостоятельно. Если вы пишете собственное программное обеспечение для управления принтером, сначала откройте устройство, а затем выполните sttyкоманду.

Вам также может понадобиться поиграть с другими настройками, например, opostозначает, что будет выполнена постобработка вывода. Если opostи onlcrустановлены оба, то onlcrпри добавлении байта новой строки (0xa) будет добавлен дополнительный возврат каретки (0xd), обычно для предотвращения печати по лестнице, такой как

This is a line
              This is the next line

Это может или не может быть то, что вы хотите. Если вы хотите, чтобы на принтер выводился один-к-одному, opostотключите его (добавьте -opostк sttyпараметрам).

Рукопожатие (управление потоком) также контролируется stty, не зная больше о принтере. Я не могу сказать, нужно ли вам что-то устанавливать.

Проверьте sttyman-страницу для получения дополнительной информации.

wurtel
источник