我花了太多时间试图理解这里的问题。我正在使用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>
答案 0 :(得分:1)
我现在正在经历同样的问题。我在你的代码中看到的唯一让我感到奇怪的是以下清单标记:
<Device Id="any">
通常,&#34;任何&#34;价值有效。但是我遇到了需要供应商和产品ID的问题;我不太清楚为什么,但我认为它基于设备/用途类型。我会尝试硬编码供应商和产品ID以查看它是否有所作为。
另一个想法:我用use标签猜测您的扫描仪被配置为键盘。您可以检查您的扫描仪是否可以配置为非键盘HID设备,这对我个人有帮助。我看到互联网上的其他人遇到了HidDevice返回为null的问题,因为另一个程序正在使用该设备;在你的情况下,操作系统可能已经在使用键盘并以某种方式将其锁定。
祝你好运!