2011-12-29 2 views
5

В приложении C#, какие хорошие способы обнаружить наличие определенного устройства, подключенного к компьютеру? Программно, конечно. Мне нужно поддерживать Windows XP и 7.Как определить наличие определенного устройства

фон

Я дал огромное приложение C#, который использует некоторые подсоединенного устройства. Устройства являются настраиваемым оборудованием и не предназначены для использования без программного обеспечения. Когда приложение C# запускается, он ищет такие подключенные устройства и связывается с ними, когда это необходимо. Могут быть несколько подключенных устройств. Я не изучал исходный код, который ищет устройства. Устройства подключаются к ПК с помощью USB или последовательного кабеля. Они отображаются как COM-порт в диспетчере устройств. Иногда между ПК и устройством может быть USB-концентратор или последовательный порт USB.

Когда устройство подключено к определенному USB-концентратору или используется определенный последовательный порт USB-конвертер, иногда программное обеспечение не может обнаружить устройство должным образом. Иногда это зависит от ПК и ПК. Мы не уверены, вызывает ли это у некоторых драйверов.

Мне сказали изучить алгоритм поиска устройства и, если возможно, придумать лучшее решение и заменить текущую реализацию. Раньше я этого не делал, и мне нужно узнать, как Windows управляет устройствами под капотом.

Как я могу найти конкретные подключенные устройства в C#? Какая хорошая практика и что я должен знать или избегать?

+0

Может быть, эта статья интересна в: http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net и http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

Вы можете перечислить все подключенные (usb) устройства с использованием WMI или таких. Насколько я помню, они довольно медленно работают. Однако могут быть лучшие способы. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

ответ

3

Вы можете найти все устройства в реестре: HKLM/CurrentControlSet/Enum (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

Но будет проблема с последовательным портом. Вы не можете быть уверены в том, какое устройство подключено к последовательному порту. Это может быть мобильный телефон, модем, мышь, ваше устройство, другое настраиваемое устройство и т. Д. Чтобы гарантировать, что ваше устройство подключено к данному последовательному порту, вы должны попытаться связаться с ним. И если он отвечает надлежащим образом - тогда да, это ваше устройство.

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

UPD:

Другой ссылка о перечисляющих последовательных портах: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

ссылка, которую вы указали для Windows CE. можете ли вы предоставить ссылку для windows xp/7? Благодарю. Я не мог найти его в msdn путем быстрого поиска. – Donotalo

+0

К сожалению, извините. Исправлена ​​статья. Теперь он указывает на правильную статью. – werewindle

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