Подключение устройства к последовательному порту компьютера по RS422

Рейтинг: 1Ответов: 0Опубликовано: 11.05.2023

Имеется промышленный компьютер с 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. Я даже визуалльно вижу, что там нет этой последовательности, ну и прикладной софт тоже не работает.

Ответы

Ответов пока нет.