2

Есть ли способ проверить, какая скорость передачи данных поддерживается для последовательного устройства в Linux?

Я просмотрел каталог /sys/class/tty/ttyS0 , но не вижу там ничего такого, что перечисляет информацию такого типа.

2 ответа2

6

Вы можете проверить скорость передачи устройства с помощью команды "stty" на консоли:

$ stty < /dev/tty..      (where tty... is the device file you are listening)  

выход:

speed 9600 baud; line = 0;
-brkint -imaxbel

Вы также можете изменить скорость передачи данных с помощью следующей команды:

$ sudo stty -F /dev/tty... 9600    (or whatever baud rate number)
3

Вы, кажется, задаете два разных вопроса.

Есть ли способ проверить, какая скорость передачи данных поддерживается на последовательном устройстве?

Ответ будет зависеть от (1) возможностей аппаратного обеспечения, то есть UART/USART/SCC, и диапазона делителей, которые драйвер устройства может использовать в генераторе скорости передачи; сверьтесь с паспортом устройства; (2) частота тактового генератора / генератора, подключенного к устройству последовательного порта; обратитесь к документации совета.

Есть ли способ проверить, какие скорости передачи поддерживаются в Linux?

Одна из определенных скоростей передачи в include/asm-generic/termbits.h для члена c_cflag структуры управления терминалом является типичным методом, который драйвер устройства последовательного порта (т.е. UART/USART) принимает для значения конфигурации скорости передачи.

#define  B0     0000000         /* hang up */
#define  B50    0000001
#define  B75    0000002
#define  B110   0000003
#define  B134   0000004
#define  B150   0000005
#define  B200   0000006
#define  B300   0000007
#define  B600   0000010
#define  B1200  0000011
#define  B1800  0000012
#define  B2400  0000013
#define  B4800  0000014
#define  B9600  0000015
#define  B19200 0000016
#define  B38400 0000017

#define    BOTHER 0010000
#define    B57600 0010001
#define   B115200 0010002
#define   B230400 0010003
#define   B460800 0010004
#define   B500000 0010005
#define   B576000 0010006
#define   B921600 0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017

Драйверы последовательного порта, как правило, не имеют каких-либо средств сообщения / рекламы, какая из этих скоростей фактически поддерживается / настраивается / реализуется. Существует значение возможностей для таких атрибутов, как FIFO и спящий режим, но не для скорости передачи. Драйвер может определить вызов ioctl() для настройки (нестандартной) скорости передачи, хотя это сделает программы, использующие его, непереносимыми.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .