我正在尝试将库从经典桌面移植到 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
你的代码看起来不错,只是你抓取的选择器可能太有选择性了。您可能需要查看它吐出的文本,并删除任何不必要的狭窄内容,例如使用页面或使用 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