HidDevice.FromIdAsync使用readwrite返回null

时间:2017-05-28 15:52:10

标签: uwp hid wiimote

我正在尝试将库从经典桌面移植到UWP。除了一件事,这一切都像计划一样。当我尝试打开与设备(A wiimote)的HID连接时,如果权限在readwrite上,它将无法连接。它确实与只读权限一起使用。

可能是什么问题。清单中的权限设置为正确的值。

编辑:我检查了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

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错,除了您要抓住的选择器可能太有选择性。您可能需要查看随口吐出的文字,并删除不必要的狭窄内容,例如使用情况页面或使用情况ID。

我想打赌清单中的设备规格有问题。看看这篇文章http://www.idevstream.com/?p=322。它将帮助您识别设备的使用情况页面和使用情况ID。一旦您知道了,我敢打赌它将连接。这是我阅读本文之前一直坚持的一个示例: https://github.com/MelbourneDeveloper/Ledger.Net/blob/master/src/Ledger.Net.UWPUnitTest/Package.appxmanifest

此外,请查看Hid.Net中的以下代码以进行连接: https://github.com/MelbourneDeveloper/Hid.Net/blob/80714078fc8772dd04b60648b0fe6974205a3d8f/Hid.Net.UWP/UWPHidDevice.cs#L95