Как найти устройство последовательного порта в .NET с его именем драйвера? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть устройство, которое подключается к компьютеру через последовательный порт.Я понимаю, чтобы открыть порт в .NET я могу позвонить в порт по номеру COM.Например,

SerialPort s = new SerialPort("COM9");
s.Open();

вызывает устройство на COM9.Однако, если я запускаю свою программу и устройство последовательного порта на другом компьютере, номер порта может быть изменен, но имя устройства всегда одинаково на каждом компьютере.Например, на этом рисунке я хотел бы связаться с «8-канальным модулем USB-реле Numato Lab» независимо от номера COM-порта (имя всегда совпадает с номером порта).

enter image description here

Вопрос: В любом случае, вместо кода, приведенного выше, я называю свое устройство с его именем, как показано в диспетчере устройств, а не с номером порта?как

SerialPort s = new SerialPort("Numato Lab 8 Channel USB Relay Module");

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны получить доступ к WMI, чтобы получить эту информацию.Вы можете использовать библиотеку ORMi для быстрого доступа:

Просто создайте класс:

[WMIClass("Win32_PnPEntity")]
public class Device
{
    public string Caption { get; set;}
}

Затем запрос:

WMIHelper helper = new WMIHelper("root\\CimV2");

Device device = helper.Query<Device>().ToList().Where(p => p.Caption == "Numato Lab 8 Channel USB Relay Module").SingleOrDefault();

Если вы хотитечтобы получить больше информации, добавьте дополнительные свойства в класс Device.Свойства должны соответствовать спецификации WMI для класса Win32_PnPEntity.

После того, как вы получили устройство, вам, возможно, придется также запросить класс Win32_SerialPort, чтобы узнать, к какому порту подключено ваше устройство.Я оставлю это вашему расследованию.

Здесь вы получили большое объяснение, если вы хотите сделать всю работу самостоятельно:

https://codereview.stackexchange.com/questions/111178/find-a-serial-port-device-through-wmi-windows-management-instrumentation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...