У меня есть 3 веб-камеры USB, и 3 Arduino включили тот же компьютер. На запуске они маркированы /dev/videoN
(N идет от 0 до 2), и /dev/ttyACMN
(N идет от 0 до 2).Пока все хорошо.
Проблема состоит в том, когда что-то идет не так, как надо с одним из устройств (т.е., Ардуино, его IDE или катастрофические отказы программы видеосъемки). Затем устройству присваивают новый файл устройств (как /dev/video3
или /dev/ttyACM3
). Я хотел бы сохранить тот же файл устройств вместо этого.
Включение и отключение устройства не помогают; ни один не делает закрытие всех программ, которые должны взаимодействовать с ним. Если проблема происходит во второй раз, то еще один файл устройств создается с еще более высоким количеством.
Это - как будто дескриптор к старому файлу устройств плавает вокруг куда-нибудь и препятствует тому, чтобы тот же файл устройств был снова использован. Однако сам файл исходного устройства (говорят, /dev/ttyACM0
) больше не существует или по крайней мере не обнаруживается в списке каталогов.
Единственным путем я выяснил для решения этой проблемы, должен перезагрузить. Вместо перезагрузки, там способ произвести чистку каких-либо непрекращающихся ссылок на файл исходного устройства так, чтобы это могло быть снова использовано? Или, чтобы вызвать общую чистку всех USB-устройств и перенумеровать с нуля?
Я понял это. В основном, когда имя устройства не снова используется, это означает, что некоторый процесс все еще использует старое имя устройства. Я думал, что закрывал все, но были некоторые процессы, все еще работающие даже после того, как я закрыл все видимые окна.
Вот то, как найти процесс, который использует имя устройства:
lsof | grep /dev/ttyACM0
Затем как только я уничтожаю тот процесс и подвергаю циклу включения и выключения питания устройство, имя устройства снова используется, как желаемый.
Можно избежать большого количества головной боли, когда необходимо уничтожить процесс каждый раз путем записи udev
правила добавить символьные ссылки для тех устройств.
Поэтому каждый раз, когда устройство исчезают, символьная ссылка умрет с ним. Тогда, если Вы повторно включаете свое устройство, оно создает новый узел с увеличенным числом исключая: /dev/ttyACM1
. Однако ссылка создается в том же пути.
Видят , Как различать идентичный USB К ПОСЛЕДОВАТЕЛЬНЫМ АДАПТЕРАМ?