Поиск информации обо всех последовательных устройствах, подключенных через USB в C#

Мой проект требует обнаружения определенного устройства, когда оно подключено к USB. Я могу идентифицировать это устройство только по его описанию/названию устройства, а не по COM-порту. Я обнаружил, что для выполнения правильной функции используется запрос WMI и проверка свойства имени :

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from WIN32_SerialPort");
            foreach (ManagementObject port in searcher.Get())
            {
                deviceName = (string)foundPort.GetPropertyValue("Name"); 
               ...

. Сначала я проверил это, подключив свой телефон, и запрос вернул телефон, найденный на COM3, как и ожидалось. Затем я подключил другое устройство (преобразователь USB в последовательный порт, которое больше похоже на устройство, для которого мне нужен этот проект ), и запрос просто не нашел его. Находит только телефон. Однако это устройство отображается на порту COM4 в диспетчере устройств. Назло мне еще больше, класс SerialPort находит оба устройства, но не предоставляет информацию, необходимую для идентификации устройства :

    string[] tempPorts = SerialPort.GetPortNames();

. Я прочитал множество тем на SO и в других местах и ​​не могу найти удовлетворительного решения. Может кто-нибудь объяснить, почему запрос WIN32 _SerialPort не находит мое другое устройство? По какой-то причине он не считается последовательным портом win32? И может ли кто-нибудь указать мне направление решения этой проблемы?

26
задан dsolimano 8 October 2012 в 17:21
поделиться