我有興趣使用libhid訪問我們正在PIC單片機上開發的自定義HID設備。我已經能夠成功運行test_libhid代碼。讀取和寫入使用該庫的設備的指令作爲test_libhid代碼中的註釋提供。在Linux上使用libhid確定USB HID設備的HID路徑
我試圖按照記錄的技術進行讀寫,但到目前爲止,我還沒有成功讀取或寫入設備。我懷疑原因可能是設備的報告描述符爲輸入和輸出數據報告指定了一個64字節的數組。
我已經閱讀了usb.org中HID部分的設備類定義中包含的詳細信息,我認爲我理解描述符是如何工作的以及它們如何轉換爲HID路徑,但是我嘗試讀取和寫入數據到設備失敗。
我已經驗證該設備在Windows中工作,所以我的問題似乎在於Linux端。我不認爲這是重要的,但我應該注意到,我目前在使用Ubuntu 8.04服務器加載的VMWare虛擬機上工作
任何人都可以提供一些關於如何爲以下內容指定HID路徑的指導報告描述符(從-vvv的lsusb生成):
Report Descriptor: (length is 29)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Local): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x40 ] 64
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
此外,當我運行test_libhid程序,它轉儲解析樹作爲像這樣64個相同條目:
path: 0xff000001.0x00000000; type: 0x80
這些推測投入。此列表後面是這個樣子另外64項:
path: 0xff000001.0x00000000; type: 0x90
我已經發布到libhid郵件列表,但一直沒有太多的活動有最近,所以我想我會在這裏把我的問題。如果任何人都可以提供關於如何指定該輸入和輸出報告的HID路徑的指導,這將是一個巨大的幫助。
謝謝。
發佈您的評論:部分作爲回答,稍後再接受 – shodanex 2009-07-06 07:25:39