Динамически назначать / dev / ttyUSB * с использованием C ++ - PullRequest
0 голосов
/ 19 ноября 2018

Я запускаю на Raspbian специальную программу на C ++, которая время от времени включает и выключает USB-порты. Однако я заметил, что перечисление / dev / USB * несовместимо между циклами питания и должно быть в состоянии справиться с этим.

Существуют ли изящные способы получения строки, такой как "/ dev / ttyUSB0" или "/ dev / ttyUSB1", в зависимости от того, что в данный момент находится в / dev /? Справедливо предположить, что будет когда-либо подключено только одно устройство, но несправедливо предполагать, что это устройство помимо того, что необходимо для связи.

То, что я пробовал до сих пор:

  1. dirent.h - кажется неуклюжим, чтобы захватить все "/ dev /" и найти "ttyUSB"
  2. Принудительная установка имен устройств USB - мне нужно, чтобы моя программа не зависела от устройства, используемого на последовательном порту

Я не совсем против использования системных вызовов, но хотел бы по возможности избегать использования "ls -l / dev / ttyUSB *".

1 Ответ

0 голосов
/ 20 ноября 2018

Лучший способ сделать это - создать правило udev, которое будет создавать символическую ссылку при подключении устройства. Ваше правило udev будет выглядеть примерно так:

ATTRS{interface}="usb_converter", SYMLINK+="custom_link"

Обратите внимание, что в ATTRS есть много других опций, которые вы можете использовать для сопоставления с определенным устройством USB. Вы можете получить такую ​​информацию, как PID / VID, серийный номер устройства, производитель и т. Д. Если ваш конвертер USB-последовательный изготовлен FTDI, обычно я использую FTPROG для перепрограммирования устройства и предоставления ему уникального имя интерфейса (в данном случае usb_converter), а затем сопоставьте его, чтобы оно всегда совпадало.

См. этот ответ для получения дополнительной информации, а также это руководство для написания правил udev.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...