【问题标题】:Windows 10 UWP HID DLL Read Input Report FailsWindows 10 UWP HID DLL 读取输入报告失败
【发布时间】:2017-03-26 04:53:36
【问题描述】:

在使用 Windows 10 UWP C# 编程访问 HID USB 设备时遇到问题。

  • 找到设备(GetDeviceSelector、DeviceInformation)没有问题,打开设备(FromIdAsync)也没有问题。
  • 我还可以向它发送一个没有问题的输出报告(CreateOutputReport,为消息添加一个字节数组,SendOutputReportAsync),USB 设备通过打开 LED 做出正确反应。
  • 无论我如何尝试包含不同的报告 ID,我都无法读取输入报告 (GetInputReportAsync)。尝试执行此操作时,设备仍然有效且不为空。

我已经仔细检查了 VID、PID、使用页面和 ID。这些都没有违反我在文档中可以找到的任何内容,而不是尝试使用顶级使用页面。

我已经仔细检查了设备中的固件及其 USB 描述符。设备管理器在 Windows 7 或 10 中很满意,没有报告任何问题。我可以通过我用 Windows DDK 编写的用于 Windows 7 和测试应用程序的接口 DLL 访问 Windows 7 或 10 中的设备,并在 Windows 7 或 10 中正常发送/接收。我可以设置 LED,回读值,等等,所有功能都工作。

我已经连接了一个 USB 分析器并且数据包在那里,但是 GetInputReportAsync 函数不会返回任何数据,只是一个异常“连接到系统的设备不起作用。(来自 HRESULT 的异常:0x8007001F)”

使用 Window 10 Home,启用开发者模式。已试用 Visual Studio 2015 Community Edition 和 VS 2015 Pro 试用版。我已经尝试过 GitHub 上的 Windows-universal-samples-master 和 CustomHidDeviceAccess 项目,没有运气,我的设备与本演示中使用的设备有点不同。

以前有人见过吗?有什么技巧或特殊方法可以做到这一点吗? Windows 10 或我的项目中是否缺少我的设置?十六进制FF中是否有某些使用页面?我不能与 UWP 一起使用的范围?还是某些报告 ID?只是想知道为什么我在尝试通过 C# UWP 获取输入报告时总是遇到异常,以及为什么我的 DDK DLL/应用程序总是有效。建议?谢谢。

【问题讨论】:

    标签: usb report uwp hid


    【解决方案1】:

    显然,您不能只调用 GetInputReportAsync() 函数来读取报告。相反,我可以让它工作的唯一方法是向我的设备添加一个事件处理程序,以处理通过 InputReportReceived 接收输入报告。然后在我发送输出报告后,等待事件处理程序触发并通知设备返回的输入报告数据,即对我的命令的回复。这似乎是我可以让它在这个配置上工作的唯一方法。

    【讨论】:

      【解决方案2】:

      我敢打赌这是权限问题。如果您没有在包清单中完全正确地指定权限,您将能够迭代设备,但您将无法连接。阅读这篇文章http://www.idevstream.com/?p=322。它帮助我弄清楚我需要在清单中放入什么。

      这是一个让我难过的工作示例: https://github.com/MelbourneDeveloper/Ledger.Net/blob/master/src/Ledger.Net.UWPUnitTest/Package.appxmanifest 。它适用于库https://github.com/MelbourneDeveloper/Hid.Net

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-06
        • 2018-10-31
        • 1970-01-01
        相关资源
        最近更新 更多