Мой проект требует обнаружения определенного устройства, когда он подключен к USB. Единственным способом, которым я могу идентифицировать это устройство, является его описание/имя устройства, а не com-порт. То, что я нашел для выполнения правильной функции, - это использование запроса WMI и проверка свойства name:
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 по какой-то причине? И, может кто-нибудь, пожалуйста, укажите мне направление решения этой проблемы?