3

我正在尝试将库从经典桌面移植到 UWP。除了一件事,一切都按计划进行。当我尝试打开与设备(A wiimote)的 HID 连接时,如果权限处于读写状态,它将无法连接。它确实适用于只读权限。

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

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

1 回答 1

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

于 2018-11-25T03:17:16.120 回答