HIdDevice.fromIdAsync始终返回null

时间:2017-06-22 21:03:40

标签: javascript uwp windows-10-universal barcode-scanner hid

我花了太多时间试图理解这里的问题。我正在使用HID条形码扫描仪,并能够获取设备信息。但即使使用正确的设备ID,我也无法获得HidDevice对象。它总是返回null。这就是我所拥有的:

   var selector = Windows.Devices.HumanInterfaceDevice.HidDevice.getDeviceSelector(parseInt('0x1', 16), parseInt('0x6', 16));

        Windows.Devices.Enumeration.DeviceInformation.findAllAsync(selector, null).then(
               function (deviceInfoCollection) {
                   if (deviceInfoCollection.length > 0) {
                       for (var i = 0; i < deviceInfoCollection.length; i++) {
                           var id = deviceInfoCollection.getAt(i).id;
                           return Windows.Devices.HumanInterfaceDevice.HidDevice.fromIdAsync(id, Windows.Storage.FileAccessMode.readWrite);
                       }
                   }
                   else {
                       throw "No Devices Discovered.";
                   }
               })
        .done(function (device) {
            if (device != null)
                successCallback(device.name);
        });

我在清单文件中添加了这些设备功能:

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

1 个答案:

答案 0 :(得分:1)

我现在正在经历同样的问题。我在你的代码中看到的唯一让我感到奇怪的是以下清单标记:

<Device Id="any">

通常,&#34;任何&#34;价值有效。但是我遇到了需要供应商和产品ID的问题;我不太清楚为什么,但我认为它基于设备/用途类型。我会尝试硬编码供应商和产品ID以查看它是否有所作为。

另一个想法:我用use标签猜测您的扫描仪被配置为键盘。您可以检查您的扫描仪是否可以配置为非键盘HID设备,这对我个人有帮助。我看到互联网上的其他人遇到了HidDevice返回为null的问题,因为另一个程序正在使用该设备;在你的情况下,操作系统可能已经在使用键盘并以某种方式将其锁定。

祝你好运!

相关问题