Я пытаюсь динамически перечислить USB-устройства, подключенные к компьютеру, которые соответствуют определенному UsbDeviceClass
Информация о классе USB-устройств, которые я пытаюсь перечислить в диспетчере устройств, следующая
В идеале он должен иметь возможность перечислять порты Com
, поскольку устройства, которые я ищу в списке, в частности, это Arduinos.
DeviceInformationCollection usbDeviceInfoCollection = await DeviceInformation.FindAllAsync(UsbDevice.GetDeviceClassSelector(new UsbDeviceClass()
{
ClassCode = 0x02,
SubclassCode = 0x02,
ProtocolCode = 0x01
}));
Debug.WriteLineIf(usbDeviceInfoCollection.Count == 1, "1 USB device found");
Debug.WriteLineIf(usbDeviceInfoCollection.Count != 1, usbDeviceInfoCollection.Count + " USB devices found");
for (int i = 0; i < usbDeviceInfoCollection.Count; i++)
{
Debug.WriteLine("USB Device " + (i + 1));
Debug.WriteLine("ID: " + usbDeviceInfoCollection[i].Id);
Debug.WriteLine("Name: " + usbDeviceInfoCollection[i].Name);
Debug.WriteLine("Properties: " + usbDeviceInfoCollection[i].Properties);
Debug.WriteLine("");
}
В приведенном выше коде показано, как я пытался достичь этого, но до сих пор мне не повезло. Это связано с тем, что когда программа запускается, она возвращает 0 устройств при подключении устройства.
Я также попытался использовать предопределенный класс UsbDeviceClasses.CdcControl
, но также не достиг нужных результатов.
Буду признателен за то, как правильно это сделать.
Также, поскольку это проект UWP, я включил возможности ниже, чтобы он мог обнаружить устройства, в которых я хочу.
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort"/>
</Device>
</DeviceCapability>
Пример вывода информации Arduino из небольшого изменения программы с использованием DeviceInformation.FindAllAsync()
без UsbDeviceClass
в качестве jsanalytics.
Device 1354
EnclosureLocation: Windows.Devices.Enumeration.EnclosureLocation
ID: \\?\USB#VID_2341&PID_0243#9543231323835131B172#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
IsDefault: False
IsEnabled: True
Kind: DeviceInterface
Name: Genuino Uno (COM6)
Pairing: Windows.Devices.Enumeration.DeviceInformationPairing
Properties: System.__ComObject
Изображение реестра
Обновите, эту страницу о более конкретных возможностях USB, которые включают name:cdcControl, classId:02 * *
. Тем не менее, я все еще не могу его перечислить через подключенные устройства, например, это удаленное приложение arduino; Windows Remote Arduino Experience.
Быстрое редактирование для уточнения. Я не могу подключиться к устройству, я просто не могу перечислить устройства, которые являются подклассом 02 подкласса 02. 01. Можно подключиться к моему устройству, указав VID и PID, но в этом текущем случае, который не соответствует точке.