使用Windows 10 UWP C#编程访问HID USB设备时遇到问题。
我仔细检查了VID,PID,使用情况页面和ID。这些都没有违反我在文档中找到的任何内容,而不是尝试使用顶级使用页面。
我仔细检查了设备中的固件及其USB描述符。设备管理器在Windows 7或10中很满意,没有报告任何问题。我可以通过我使用Windows DDK编写的接口DLL访问Windows 7或10中的设备,以便与Windows 7和测试应用程序一起使用,并在Windows 7或10中发送/接收。我可以设置LED,读取值,等等,所有功能都有效。
我已连接USB分析仪并且数据包在那里,但GetInputReportAsync函数不会返回任何数据,只是一个例外“连接到系统的设备无法运行。(HRESULT异常:0x8007001F)”
使用Window 10 Home,启用开发者模式。已经尝试过Visual Studio 2015社区版和VS 2015 Pro试用版。我在GitHub上尝试了Windows-universal-samples-master和CustomHidDeviceAccess项目,没有运气,我的设备与本演示中使用的设备略有不同。
以前有人见过这个吗?有没有一些技巧或特殊方法来做到这一点?我在Windows 10或我的项目中缺少一个设置吗?十六进制FF中是否有某些使用页面?我不能用于UWP的范围?或某些报告ID?只是想知道为什么我总是在尝试通过C#UWP获取输入报告时出现异常以及为什么我的DDK DLL / app始终有效。建议?谢谢。
答案 0 :(得分:1)
显然你不能只调用GetInputReportAsync()函数来读取报告。相反,我可以让它工作的唯一方法是向我的设备添加一个事件处理程序,以通过InputReportReceived处理输入报告的接收。然后在我发送输出报告之后,等待事件处理程序触发并通知设备返回的输入报告数据,即对我的命令的回复。这似乎是我可以让它在这个配置上工作的唯一方法。
答案 1 :(得分:0)
我想打赌这是一个权限问题。如果您没有在软件包清单中正确指定权限,则可以遍历设备,但无法连接。阅读本文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配合使用。