2011-12-29 31 views
5

W aplikacji C#, jakie są dobre sposoby na wykrycie obecności określonego urządzenia podłączonego do komputera? Programowo, oczywiście. Muszę obsługiwać system Windows XP i 7.Jak wykryć obecność określonego urządzenia

Tło

Dostałem ogromny aplikacji C#, który wykorzystuje pewne podłączone urządzenie. Urządzenia są niestandardowym sprzętem i nie są zaprojektowane do użycia bez oprogramowania. Po uruchomieniu aplikacji C# wyszukuje takie podłączone urządzenia i komunikuje się z nimi w razie potrzeby. Może być więcej niż jedno podłączone urządzenie. Nie sprawdzałem kodu źródłowego, który przeszukuje urządzenia. Urządzenia są podłączone do komputera za pomocą kabla USB lub szeregowego. Pojawiają się jako port COM w menedżerze urządzeń. Czasami między komputerem a urządzeniem może być konwerter USB lub konwerter szeregowy na USB.

Gdy urządzenie jest podłączone do określonego koncentratora USB lub używa się konwertera szeregowego na USB, czasami oprogramowanie nie może prawidłowo wykryć urządzenia. Czasami zależy to od komputera PC. Nie jesteśmy pewni, czy powoduje to jakiś sterownik.

Powiedziano mi, żebym zajrzał do algorytmu wyszukiwania urządzeń i jeśli to możliwe, wymyśl lepsze rozwiązanie i zastąp bieżącą implementację. Nie robiłem tego wcześniej tego typu zadań i muszę się nauczyć, jak system Windows zarządza urządzeniami pod maską.

Jak mogę wyszukać określone podłączone urządzenia w C#? Jakie są dobre praktyki i czego powinienem być świadom lub czego unikać?

+0

Może ten artykuł jest interresting: http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net i http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

Możesz wyliczyć wszystkie podłączone urządzenia (usb) za pomocą WMI lub podobnych. Są dość powolni w pracy, o ile pamiętam. Mogłyby być jednak lepsze sposoby. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

Odpowiedz

3

można znaleźć wszystkie urządzenia w rejestrze: HKLM/CurrentControlSet/Enum (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

Ale nie będzie problemu z portem szeregowym. Nie można mieć pewności, które urządzenie jest podłączone do portu szeregowego. Może to być telefon komórkowy, modem, mysz, twoje urządzenie, inne niestandardowe urządzenie itp. Aby zagwarantować, że jest to twoje urządzenie podłączone do danego portu szeregowego, musisz spróbować się z nim komunikować. A jeśli reaguje we właściwy sposób - to tak, to jest twoje urządzenie.

Z tego powodu wiele programów współpracujących z urządzeniami szeregowymi prosi użytkownika o ręczne wybranie portu szeregowego, do którego podłączone jest urządzenie.

UPD:

inny link o wyliczanie porty szeregowe: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

Podany link dotyczy systemu Windows CE. czy możesz podać link do Windows XP/7? dzięki. Nie mogłem go znaleźć w msdn przez szybkie wyszukiwanie. – Donotalo

+0

Ups, przepraszam. Naprawiono artykuł. Teraz wskazuje na odpowiedni artykuł. – werewindle

Powiązane problemy