2013-08-12 8 views
1

Мое устройство подключается к ПК и предоставляет виртуальный последовательный порт. Номер последовательного порта меняется в зависимости от того, к какому физическому порту USB подключаю устройство. Есть ли способ, которым мое приложение может узнать, к какому физическому USB-порту подключено мое устройство? Это действительно поможет мне оптимизировать код. В настоящее время мое приложение определяет действительный номер порта, когда-либо подключенное устройство, путем повторения всех возможных портов, что является длительным процессом. Если я знаю, какой USB-порт был подключен, я уже знаю, какой порт comm он предоставляет, и я могу сохранить/загрузить эти настройки для каждого конкретного физического USB-порта (профиля). Я использую C++/MFC и Windows 7. Мне также хотелось бы, чтобы это работало в XP.Как определить, какой порт USB используется?

+0

Ваш вопрос, безусловно, зависимые от ОС. Из того, что вы говорите, что вы используете MFC, я предполагаю, что вы находитесь в Windows. Но какая именно версия? –

+0

Я использую Windows 7, но также хотел бы получить решение для Win XP, если оно отличается. И правильно я использую MFC. У меня есть обновленные теги вопросов, чтобы включить окна. – zar

+0

Есть ли что-то, что «отвечает» на другом конце? Если это так, я бы просто попробовал каждый серийный порт, доступный в машине (очевидно, если ваш компилятор не подключен к ядерной ракете, которая будет полететь, если вы попытаетесь подключиться к ней на своем последовательном порту и провалиться больше, чем X раз). Я использовал эту технику для поиска мобильных телефонов в системе для тестирования мобильных телефонов (потому что каждый раз, когда я подключался к другому телефону, у него был уникальный номер com-port, поэтому вместо этого я идентифицировал мобильный телефон на его идентификационной информации и использовал файл конфигурации для mappign ID телефона для более полезных имен) –

ответ

1

Источник выборки USBView доступен в WDK. Если вы не знакомы с этим, просто запустите его - этот инструмент просматривает все дерево USB в системе и распечатывает данные и описания дескрипторов для каждого устройства, а также местоположения на контроллерах и концентраторах хоста.

Начните с функции RefreshTree() в этом примере, затем вы можете следовать этому коде, чтобы увидеть, как он перечисляет контроллеры, концентраторы и, наконец, устройства.

Самый простой способ получить источник для этого образца для установки 7.1.0 WDK, который в настоящее время доступен здесь: http://www.microsoft.com/en-us/download/details.aspx?id=11800

Смежные вопросы