Я хочу обнаружить USB-устройства в Windows и Linux по их идентификатору производителя и идентификатору продукта.Я делаю это с помощью пакета LibUsbDotNet 3.0.48-alpha
NuGet.Это работает как талисман, он возвращает номер порта, который я также нахожу в диспетчере устройств, когда смотрю на диспетчер устройств в «Расположение» (например, Port_#0001.Hub_#0008
).Но номер порта (# 0001) не всегда совпадает с именем порта COM (например, COM4
или в linux /dev/ttyS0
)
Есть ли способ получить имя порта, полученное из номера порта?Или я иду в неправильном направлении?
using (var context = new UsbContext())
{
var haljiaUsbRelays = context.List().Where(d => d.ProductId == 0x7523 && d.VendorId == 0x1a86);
Console.WriteLine($"{haljiaUsbRelays.Count()} relays found.");
foreach (UsbDevice x in haljiaUsbRelays)
{
Console.WriteLine($"Portnumber: {x.PortNumber}");
string portName = ConvertPortNumberToPortName(x.PortNumber);//I need this function
var port = new SerialPort(portName);
}
}