我正在尝试将库从经典桌面移植到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
答案 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