2011-12-29 11 views
5

In un'applicazione C#, che cosa sono alcuni buoni modi per rilevare la presenza di alcuni dispositivo collegato al computer? Programmaticamente, ovviamente. Ho bisogno di supporto di Windows XP e 7.Come per rilevare la presenza di alcuni dispositivi

Sfondo

mi è stata data una grande # un'applicazione C che utilizza qualche dispositivo collegato. I dispositivi sono hardware personalizzati e non sono progettati per l'utilizzo senza il software. Quando l'app C# viene avviata, cerca tali dispositivi connessi e comunica con loro quando appropriato. Possono esserci più dispositivi collegati. Non ho esaminato il codice sorgente che cerca i dispositivi. I dispositivi sono collegati al PC tramite USB o cavo seriale. Appaiono come porta COM in Gestione dispositivi. A volte possono esserci hub USB o convertitori da seriale a USB tra il PC e il dispositivo.

Quando il dispositivo è collegato con alcuni hub USB, o certi convertitore seriale USB viene utilizzato, a volte il software non può rilevare correttamente il dispositivo. A volte varia da PC a PC. Non siamo sicuri se causa qualche driver.

mi hanno detto di esaminare il dispositivo di algoritmo di ricerca e, se possibile, trovare soluzione migliore e sostituire implementazione corrente. Non ho mai fatto questo tipo di compito prima e ho bisogno di imparare come Windows gestisce i dispositivi sotto il cofano.

Come posso cercare i dispositivi collegati specifici in C#? Quali sono alcune buone pratiche e di cosa dovrei essere consapevole o evitare?

+0

Forse questo articolo è interresting: http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net e http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

È possibile enumerare tutti i dispositivi (USB) connessi utilizzando WMI o simili. Sono abbastanza lenti a lavorare con quanto posso ricordare. Ci potrebbero essere modi migliori però. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

risposta

3

si possono trovare tutti i dispositivi di registro: HKLM/CurrentControlSet/Enum (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

Ma non ci sarà problema con la porta seriale. Non si è certi di quale dispositivo sia collegato a una porta seriale. Può essere telefono cellulare, modem, mouse, il dispositivo, un altro dispositivo su misura, ecc per garantire che sia il dispositivo collegato a una determinata porta seriale si deve cercare di comunicare con esso. E se risponde in modo corretto - allora sì, è il tuo dispositivo.

Per questo motivo molti programmi che funzionano con dispositivi seriali richiedono all'utente di selezionare manualmente la porta seriale, in cui il dispositivo è connesso.

UPD:

Un altro collegamento su porte seriali enumerazione: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

il collegamento che hai fornito è per Windows CE. puoi fornire un collegamento per windows xp/7? Grazie. non riuscivo a trovarlo in msdn con una rapida ricerca. – Donotalo

+0

Oops, mi dispiace. Articolo fisso Ora punta all'articolo corretto. – werewindle

Problemi correlati