Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: sergek от Февраль 17, 2023, 00:13



Название: [Решено] Статическая привязка USB-устройств к портам
Отправлено: sergek от Февраль 17, 2023, 00:13
Коллеги,
к малине подключены два преобразователя интерфейса USB/RS-485, операционная система назначает им имена:
Код:
sergek@Home:~ $ ls -l /dev/*US*
crwxrwxrwx 1 root dialout 188, 0 фев  7 18:20 /dev/ttyUSB0
crwxrwxrwx 1 root dialout 188, 1 фев  7 18:20 /dev/ttyUSB1
При длительной работе операционная система иногда меняет эти имена (по какой причине, не знаю, но недопустимо часто - иногда два раза в сутки, иногда пару раз за неделю):
Код:
sergek@Home:~ $ ls -l /dev/*US*
crwxrwxrwx 1 root dialout 188, 2 фев  8 10:12 /dev/ttyUSB2
crwxrwxrwx 1 root dialout 188, 3 фев  8 10:12 /dev/ttyUSB3
Естественно, программа, подключенная к этим портам по именам ttyUSB0, ttyUSB1 перестает работать.
Чтобы программа использовала постоянные имена, сделал симлинки с помощью правил /etc/udev/rules.d/90-converters.rules:
Код:
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="0000", SYMLINK+="USR103", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="USR101", MODE="0777"

Теперь ссылки на порты, с которыми работает моя программа, не меняются, даже если операционка изменила их имена:
Код:
lrwxrwxrwx 1 root root         7 фев  8 10:12 /dev/USR101 -> ttyUSB2
lrwxrwxrwx 1 root root         7 фев  8 10:12 /dev/USR103 -> ttyUSB3
Код:
lrwxrwxrwx 1 root root         7 фев 12 14:59 /dev/USR101 -> ttyUSB0
lrwxrwxrwx 1 root root         7 фев 16 19:46 /dev/USR103 -> ttyUSB2
Но подключение к физическим портам при смене их имен пропадает, программа все равно теряет соединение и перестает работать. Приходится ее перезапускать.
Подскажите, пожалуйста, есть ли способ восстановить подключение кроме переоткрытия порта в самой программе?


Название: Re: Статическая привязка USB-устройств к портам
Отправлено: sergek от Февраль 27, 2023, 16:42
С причиной переподключения портов, вроде, разобрался - просадка по напряжению питания. Совсем забыл про эту проблему: когда запускал малину, пришлось искать блок питания и приличный usb-кабель. Подобрал 3-х амперный зарядник, вроде стабильно заработало. А потом подключил два usb-преобразователя и начались фокусы. Придется тратиться на блок питания))