2011-12-29 9 views
5

En una aplicación C#, ¿cuáles son algunas buenas maneras de detectar la presencia de cierto dispositivo conectado a la computadora? Programaticamente, por supuesto. Necesito compatible con Windows XP y 7.Cómo detectar la presencia de cierto dispositivo

Antecedentes

Me han dado una gran aplicación de C# que utiliza algún dispositivo conectado. Los dispositivos son hardware personalizado y no están diseñados para usarse sin el software. Cuando se inicia la aplicación C#, busca dichos dispositivos conectados y se comunica con ellos cuando corresponda. Puede haber más de un dispositivo conectado. No he investigado el código fuente que busca en los dispositivos. Los dispositivos están conectados a la PC con un cable USB o de serie. Aparecen como puerto COM en el administrador de dispositivos. A veces puede haber conversores USB hub o seriales a USB entre la PC y el dispositivo.

Cuando el dispositivo está conectado con un concentrador USB determinado, o se utiliza cierto convertidor de serie a USB, a veces el software no puede detectar el dispositivo correctamente. A veces varía de PC a PC. No estamos seguros si esto causa algún controlador.

Me han dicho que investigue el algoritmo de búsqueda del dispositivo y, si es posible, proponga una mejor solución y reemplace la implementación actual. No he hecho este tipo de tareas antes y necesito aprender cómo Windows administra los dispositivos bajo el capó.

¿Cómo puedo buscar dispositivos conectados específicos en C#? ¿Cuáles son algunas buenas prácticas y qué debo tener en cuenta o evitar?

+0

Tal vez este artículo se interresting: http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net y http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

Puede enumerar todos los dispositivos conectados (usb) utilizando WMI o similar. Son bastante lentos para trabajar con ellos hasta donde puedo recordar. Sin embargo, podría haber mejores formas. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

Respuesta

3

Usted puede encontrar todos los dispositivos de registro: HKLM/CurrentControlSet/Enum (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

Pero no habrá problema con el puerto serie. No puede estar seguro de qué dispositivo está conectado a un puerto en serie. Puede ser un teléfono móvil, un módem, un mouse, su dispositivo, otro dispositivo personalizado, etc. Para garantizar que sea su dispositivo conectado a un puerto serie dado, debe intentar comunicarse con él. Y si responde de manera adecuada, entonces sí, es su dispositivo.

Debido a esto, muchos programas que funcionan con dispositivos serie le preguntan al usuario que seleccione manualmente el puerto serie, donde está conectado el dispositivo.

UPD:

Otro enlace sobre puertos serie enumerar: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

El enlace que proporcionó es para Windows CE. ¿Puedes proporcionar un enlace para Windows XP/7? Gracias. No pude encontrarlo en msdn mediante una búsqueda rápida. – Donotalo

+0

Oops, lo siento. Artículo arreglado Ahora apunta a un artículo apropiado. – werewindle

Cuestiones relacionadas