Я пытаюсь заставить пользовательское устройство HID (в настоящее время работающее на малиновом пи-ноль) быть распознанным приложением UWP, работающим в Windows 10. Устройство имеет тип Vendor Defined, поэтому не попадает в список устройств заблокирован на UWP (https://docs.microsoft.com/en-us/uwp/api/Windows.Devices.HumanInterfaceDevice)
Я написал дескриптор отчета, и в настоящее время он обрабатывается диспетчером устройств в Windows. В диспетчере устройств в разделе «Свойства»> «Детали»> «Идентификаторы оборудования» отображаются VID и PID. Там нет HID_Device_UP, хотя, как я видел в уроках (http://www.idevstream.com/?p=322).
Мой дескриптор выглядит следующим образом:
06 AA ff USAGE_PAGE (Vendor Defined Page 1)
09 01 USAGE (Vendor Usage 1)
A1 01 COLLECTION (Application)
15 00 LOGICAL MINIMUM (0)
26 ff 00 LOGICAL MAXIMUM (255)
75 08 REPORT SIZE (8)
95 40 REPORT COUNT (64)
09 01 USAGE (Vendor Usage 1)
81 00 INPUT (Data,Ary,Abs)
09 01 USAGE (Vendor Usage 1)
91 00 OUTPUT (Data,Ary,Abs)
c0 END COLLECTION
В скрипте bash на Raspberry Pi, который запускается при загрузке, я устанавливаю следующее в качестве VID и PID:
echo 0x45E > idVendor
echo 0x610 > idProduct
Этот код используется для доступа к устройству HID:
private async void EnumerateHidDevices()
{
ushort vendorId = 0x045E;
ushort productId = 0x0610;
ushort usagePage = 0xFFAA;
ushort usageId = 0x01;
string selector =
HidDevice.GetDeviceSelector(usagePage, usageId, vendorId, productId);
var devices = await DeviceInformation.FindAllAsync(selector);
if (devices.Any())
{
Debug.WriteLine("HID devices found: " + devices.Count);
}
else
{
Debug.WriteLine("HID device not found");
}
}
В Package.appxmanifest я включил следующее:
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:045E 0610">
<Function Type="name:vendorSpecific" />
</Device>
</DeviceCapability>
<DeviceCapability Name="usb">
<Device Id="vidpid:045E 0610">
<Function Type="classId:ff * *"/>
<!--<Function Type="name:vendorSpecific"/>-->
</Device>
</DeviceCapability>