Подключение устройства к последовательному порту компьютера по RS422
Имеется промышленный компьютер с 4 последовательными портами и Ubuntu 22.04. (Модель материнской платы неизвестна) Требуется подключить устройство по протоколу RS422 (baudrate 460800, N 8, stop-bit 1, parity None, в общем все стандартно кроме скорости ). В BIOS имеется выбор режимов работы портов (RS232/485/422), был выбран соответсвующий режим - RS422.
Собственно в чем проблема: при чтении из порта получаю неверные символы (как при несоотвествии baudrate). Само устройство работает исправно (при подключении через USB преобразователь проблем нет).
вывод dmesg | grep tty
[ 1.146160] 00:04: ttyS4 at I/O 0x240 (irq = 5, base_baud = 115200) is a 16550A
[ 1.171954] 00:05: ttyS5 at I/O 0x248 (irq = 3, base_baud = 115200) is a 16550A
[ 1.197739] 00:06: ttyS6 at I/O 0x250 (irq = 6, base_baud = 115200) is a 16550A
[ 1.223543] 00:07: ttyS7 at I/O 0x258 (irq = 10, base_baud = 115200) is a 16550A
Собственно ttyS(4-7)
это те самые порты. Работают одинаково.
Не совсем понимаю что значит base_baud
, и в каком отношени он находятится с baudrate
, указанным при подключении к порту.
На всякий случай пробовал менять base_baud на 460800 через stty
sudo stty -F /dev/ttyS7 460800 cs8 -cstopb -parenb
на что получаю unable to perform all requested operations
(с меньшими скоростями такой ошибки нет).
Все-таки установил через команду
sudo setserial /dev/ttyS7 baud_base 460800
Но результата нет.
Устройство обменивается бинарными пакетами, пакет должен начинаться с последовательности 0x1010
. Я даже визуалльно вижу, что там нет этой последовательности, ну и прикладной софт тоже не работает.