Wyszukiwanie informacji o wszystkich urządzeniach szeregowych podłączonych przez USB w C #
Mój projekt wymaga wykrycia określonego urządzenia, gdy jest podłączone do USB. Jedynym sposobem na zidentyfikowanie tego urządzenia jest jego opis / nazwa urządzenia, a nie port com. To, co znalazłem, aby wykonać właściwą funkcję, to użycie kwerendy WMI i sprawdzenie właściwości nazwy:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from WIN32_SerialPort");
foreach (ManagementObject port in searcher.Get())
{
deviceName = (string)foundPort.GetPropertyValue("Name");
...
Początkowo przetestowałem to przez podłączenie telefonu, a zapytanie zwróciło telefon znaleziony na COM3 zgodnie z oczekiwaniami. Następnie podłączyłem inne urządzenie (konwerter USB na szeregowy, który bardziej przypomina urządzenie, którego potrzebuję dla tego projektu), a zapytanie po prostu go nie znalazło. Znajduje tylko telefon. To urządzenie wyświetla się jednak na porcie COM4 w Menedżerze urządzeń. Na przekór mnie jeszcze bardziej, klasa SerialPort znajduje oba urządzenia, ale nie dostarcza informacji potrzebnych do identyfikacji urządzenia:
string[] tempPorts = SerialPort.GetPortNames();
Przeczytałem wiele wątków na SO i gdzie indziej i nie mogę znaleźć zadowalającego rozwiązania. Czy ktoś mógłby wyjaśnić, dlaczego zapytanie WIN32_SerialPort nie znajduje mojego innego urządzenia? Czy z jakiegoś powodu nie jest uważany za port szeregowy win32? I czy ktoś mógłby mi wskazać kierunek rozwiązania tego problemu?