2016-11-11 99 views
2

存在Windows 10 UWP C#編程訪問HID USB設備的問題。Windows 10 UWP HID DLL讀取輸入報告失敗

  • 我沒有問題找到一個設備(GetDeviceSelector,DeviceInformation)並沒有麻煩打開設備(FromIdAsync)。
  • 我也可以發送一個輸出報告沒問題(CreateOutputReport,爲消息添加一個字節數組,SendOutputReportAsync),並且USB設備通過打開LED來正確反應。
  • 無論我嘗試什麼,包括不同的報告ID,我都無法讀回輸入報告(GetInputReportAsync)。試圖執行此操作時,該設備仍然有效且不爲空。

我已經雙重檢查了VID,PID,使用頁面和ID。這些都沒有違反我能在文檔中找到的任何內容,而不是試圖使用頂級使用頁面。

我已經雙重檢查了設備中的固件及其USB描述符。設備管理器在Windows 7或10中很開心,沒有問題報告。我可以通過Windows 7中使用Windows DDK編寫的接口DLL訪問Windows 7或10中的設備,並在Windows 7或10中使用測試應用程序和發送/接收。我可以設置LED,讀取值,等等,所有功能都起作用。

我已經「(從HRESULT異常:0x8007001F)附接到所述系統的設備不能正常工作」連接的USB分析器和包在那裏,但GetInputReportAsync功能不會返回任何數據,只是一個例外

使用Window 10 Home,啓用開發者模式。已經嘗試過Visual Studio 2015社區版和VS 2015 Pro試用版。我已經嘗試了GitHub和CustomHidDeviceAccess項目上的Windows-universal-samples-master,沒有運氣,我的設備與本演示中使用的設備有點不同。

以前有人看過這個嗎?有一些技巧或特殊的方法來做到這一點?有沒有我在Windows 10或我的項目中缺少的設置?在十六進制FF中是否有某些使用頁面?我無法使用UWP的範圍?或某些報告ID?只是想知道爲什麼當我試圖通過C#UWP獲取輸入報告時總是會遇到異常,以及爲什麼我的DDK DLL/app始終工作。建議?謝謝。

回答

1

顯然你不能只調用GetInputReportAsync()函數來讀取報表。相反,唯一能讓它工作的方法是向我的設備添加一個事件處理程序,以通過InputReportReceived處理輸入報告的接收。然後,在發送我的輸出報告後,等待事件處理程序觸發並通知從設備返回的輸入報告數據以及對我的命令的回覆。這似乎是我能使它在這個配置上工作的唯一方法。