|
Windows must die
|
|
А как, собственно, различить USB CDC устройства?30.03.2023, 13:46. Показов 1977. Ответов 12
Собственно, имею кучу железяк на разных STM32. Все они подключаются к компьютеру по USB. Для того, чтобы железяки работали без проблем и "из коробки" (а еще, чтобы имена в /dev/ были не уродскими ttyACMx, а ttyUSBx, кроме того, в мастдайках вроде бубунты, где запущена всякая лишняя дрянь, modemmanager может блокировать такое устройство после подключения, считая его модемом), я сделал на них эмуляцию "старых" PL2303 (это еще хорошо тем, что вендовозы к своим игровым приставкам мои железяки вряд ли смогут подключить, т.к. новые "драйвера" не поддерживают старых чипов).
Итак, проблема: при подключении к одному компьютеру более одной железяки непонятно, какому демону какой из /dev/ttyUSBx обслуживать. Может, есть какие-то текстовые поля в USB-дескрипторах, которые не повлияют на опознавание устройства, но помогут udev различить их и создать симлинки (скажем, /dev/CANx, /dev/lensx, /dev/motorsx и т.п.)? Приходится демону перебирать все устройства, отправлять запрос на выдачу справки и парсить первую строчку (где содержится название железки, ссылка на репу на гитхабе, дата и номер сборки). В принципе, если на эмуляторе PL2303 сделать такое не выйдет, а на обычном CDC - получится, то я готов смириться с некоторыми неудобствами ради удобств в распознавании. Возможно, @COKPOWEHEU сможет мне помочь (кажется, именно он когда-то на каком-то форуме об этом обмолвился). Блин, как тут юзера кастовать?
0
|
|
| 30.03.2023, 13:46 | |
|
Ответы с готовыми решениями:
12
Как отключить посылку AT команд при подключение CDC USB устройства (COM порта)? STM32F103 CubeMX USB composite CDC + CDC (2xCDC) Обмен данными с несколькими USB CDC устройствами, подключёнными через USB HUB с внешним питанием |
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
|||||||
| 31.03.2023, 12:55 | |||||||
Сообщение было отмечено Eddy_Em как решение
Решение
Ну, я через udev делал. Строковое описание интерфейса вполне доступно и не влияет на выбор драйвера. В принципе, кратко это решение я уже когда-то описывал.
CONNECTED_vusb выбрано неудачно, лучше его заменить на что-то более осмысленное.
1
|
|||||||
|
Windows must die
|
|||||||
| 31.03.2023, 13:55 [ТС] | |||||||
|
Спасибо!
У меня тоже есть идея на основе F072 сделать устройство "семь в одном": один CDC использовать для настройки и доступа к GPIO, а остальные - CAN, RS232, RS485, I2C и SPI. Добавлено через 21 минуту Правильно ли я понял, что если я в дескрипторе интерфейса выставлю iInterface, скажем, в 5, то отдать эту строку я должен по запросу с vWalue == 0x305? Ну и аналогично для других интерфейсов свой номер можно выставить? Добавлено через 11 минут Похоже, что да: то, что я воспринимал как одно число - вроде
Теперь-то понятно. Спасибо еще раз! Как будет время, попробую "на кошках".
0
|
|||||||
|
Windows must die
|
|||||||||||||||||||||||||||||||||||||||||
| 10.04.2023, 21:42 [ТС] | |||||||||||||||||||||||||||||||||||||||||
|
COKPOWEHEU, странно. Пишу вот так:
А на iInterface lsusb выдает:
Добавлено через 21 минуту Ага, проблема отпала: я сам себя обманул, пытаясь сделать оптимально и красиво - ведь всю эту структуру нужно за один присест посылать, т.е. финт с указателем на строку не проходит. Сделал так:
Спасибо! Добавлено через 16 минут Вот черт! Несмотря на наличие атрибута iInterface, в udev это поле не попадает! Копаю дальше, что за проблемы. Добавлено через 10 минут Ах, черт подери! Устройство, у которого есть атрибуты idVendor/idProduct и устройство с атрибутом interface - разные! Т.е. не выйдет по VID/PID их так разделять ☹ Буду думать дальше. Добавлено через 30 минут Здесь нашел решение: на время прогона "родительского" устройства нужно сохранить VID/PID в переменную, а потом проверить:
0
|
|||||||||||||||||||||||||||||||||||||||||
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
||
| 10.04.2023, 21:50 | ||
Сообщение было отмечено Eddy_Em как решение
Решение
1
|
||
|
Windows must die
|
|
| 10.04.2023, 22:49 [ТС] | |
|
COKPOWEHEU, ага, малость разобрался. Еще раз спасибо.
Написал об этом в ЖЖ.
0
|
|
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
||
| 11.04.2023, 09:51 | ||
PROGRAM="/bin/bash -c "ls /dev | grep tty_$attr{interface}_ | wc -l "". Хотя, наверное, его можно было бы сделать и попроще... ну да ладно, не каждый час в usb что-то вставляют.
0
|
||
|
Windows must die
|
||
| 11.04.2023, 11:18 [ТС] | ||
|
0
|
||
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
||
| 11.04.2023, 13:42 | ||
|
0
|
||
|
Windows must die
|
|
| 11.04.2023, 14:37 [ТС] | |
|
[inline]man udev[/iniline] пишет, что "%n" — номер, выданный устройству ядром. Тут уж действительно непонятно, как в составном устройстве будут именоваться части. Если "%n" для всех них будет иметь одно и то же значение — хорошо, иначе (если каждый интерфейс, подпадающий под данный модуль ядра, будет нумероваться последовательно) придется и правда вот так выворачиваться…
0
|
|
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
|
| 12.04.2023, 10:17 | |
|
Проверил на ft4232, оказалось, что мой вариант работает хуже, чем %n. Но из-за чего-то же я от него отказался. Надо бы проверить на нескольких одинаковых устройствах или что-то в этом роде, но мне это сейчас неудобно.
0
|
|
|
Windows must die
|
|
| 12.04.2023, 10:59 [ТС] | |
|
Ну вот мне пока некогда, но как будет время, проверю на составном устройстве.
Обычные-то эмуляторы PL2303 у меня отлично нумеруются по очередности подключения, проверял вчера на преобразователях CAN-USB (заодно им тоже пофиксил прошивку, чтобы выдавали системе строковый дескриптор интерфейса). Вообще, подозреваю, что ядро не проверяет ни iManufacturer, ни iProduct — можно было бы и туда что-нибудь записать…
0
|
|
|
4084 / 2682 / 432
Регистрация: 09.09.2017
Сообщений: 11,933
|
||
| 12.04.2023, 11:37 | ||
-v, таки запросит. Причем, кажется, только от рута.Другое дело, много ли смысла туда что-то писать. Хотя я так делал для HID. Оставил VID:PID от vusb, а по manufacturer/product моя софтина его отличала от любых других vusb. Но то CustomHID, где без специфичной управляющей программы не обойтись, плюс само устройство достаточно простое.
0
|
||
| 12.04.2023, 11:37 | |
|
Помогаю со студенческими работами здесь
13
USB Audio + USB CDC на одной STM32F4 Два и более CDC устройства на AT90USB82 на одном компе Переводить команды USB WIFI Адаптера через компьютер по USB-USB для устройства STM32F4Discovery USB CDC USB CDC for CC1111 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
|