HidDevice.FromIdAsync возвращает значение null с чтением и записью

Я пытаюсь перенести библиотеку с классического рабочего стола на UWP. Все работает, как и планировалось, кроме одного. Когда я пытаюсь открыть HID-соединение с устройством (wiimote), оно не будет подключаться, если разрешения на чтение и запись. Он работает с правами только на чтение.

В чем может быть проблема. Разрешения в манифесте установлены на правильные значения.

РЕДАКТИРОВАТЬ: я проверил DeviceAccessStatus, чтобы убедиться, что разрешения не подходят, но он возвращает DeviceAccessStatus.Allowed

Код манифеста

<Capabilities>
 <Capability Name="internetClient" />
  <DeviceCapability Name="humaninterfacedevice">
   <Device Id="any">
    <Function Type="usage:0005 *"/>
    <Function Type="usage:0001 0005"/>
   </Device>
  </DeviceCapability>
</Capabilities>

Код подключения

var selector = HidDevice.GetDeviceSelector(1, 5);
var devices = await DeviceInformation.FindAllAsync(selector);
if (devices.Count > 0)
{
    foreach (var device in devices)
    {
        var deviceId = device.Id;
        var foundDevice = await HidDevice.FromIdAsync(deviceId, FileAccessMode.ReadWrite); // Does not work always returns null
        if (foundDevice == null)continue;
        // if the vendor and product IDs match up
        if (foundDevice.VendorId == VID && foundDevice.ProductId == PID)
        {
        // Unrelated code

person Starlight_NL    schedule 28.05.2017    source источник
comment
Вы уверены, что ваше приложение UWP имеет разрешение ReadWrite на вашем устройстве?   -  person Sunteen Wu    schedule 01.06.2017
comment
@SunteenWu-MSFT Если вы имеете в виду функцию HidDevice, то да. Если нет, то где я могу установить эти разрешения.   -  person Starlight_NL    schedule 01.06.2017
comment
Удачи с этой проблемой?   -  person MoDu    schedule 16.12.2017
comment
@ SunteenWu-MSFT, вы нашли, в чем проблема? Попытка подключиться к устройству Hide и всегда получать null при вызове FromIdAsunc   -  person True Solutions    schedule 11.04.2018


Ответы (1)


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

Могу поспорить, что в манифесте есть проблема со спецификацией вашего устройства. Взгляните на эту статью http://www.idevstream.com/?p=322. Это поможет вам определить страницу использования и идентификатор использования вашего устройства. Как только вы это получите, держу пари, это соединится. Вот пример того, на котором я застрял, пока не прочитал статью: https://github.com/MelbourneDeveloper/Ledger.Net/blob/master/src/Ledger.Net.UWPUnitTest/Package.appxmanifest

Кроме того, взгляните на этот код в Hid.Net для подключения: rel="nofollow noreferrer">https://github.com/MelbourneDeveloper/Hid.Net/blob/80714078fc8772dd04b60648b0fe6974205a3d8f/Hid.Net.UWP/UWPHidDevice.cs#L95

person Christian Findlay    schedule 25.11.2018