0
我正在研究一個適配器,它需要兩個庫並將發射器/控制器輸入轉換爲HID輸入(通過PPM,但我認爲這對此帖不重要)。我使用的是Arduino,但是在這裏發帖是因爲除非我誤解,否則我的問題是在HID報告描述符中,而不是我的Arduino代碼。HID遊戲手柄報告描述符問題
我有一個樣本描述,如果我使用的作品,工作一個是這樣的:
PROGMEM const char usbHidReportDescriptor[36] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad)
0xa1, 0x01, // COLLECTION (Application)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z) rx
0x09, 0x35, // USAGE (Rx) ry
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x46, 0xff, 0x00, // PHYSICAL_MAXIMUM (255)
0x15, 0x00, // LOGICAL_MINIMUM (-127)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
};
只有棍棒,沒有任何按鍵,所以我試圖創建具有按鈕的描述符中的第一個樣本。我與HID描述符工具生成的配置文件是這樣的:
PROGMEM const char usbHidReportDescriptor[46] = {
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x05, //USAGE (Game Pad)
0xa1, 0x01, //COLLECTION (APPLICATION)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x09, //USAGE_PAGE (Button)
0x19, 0x01, //USAGE_MINIMUM (Button1)
0x29, 0x10, //USAGE_MAXIMUM (Button 16)
0x15, 0x00, //LOGICAL_MINIMUM (0)
0x25, 0x01, //LOGICAL_MAXIMUM(1)
0x95, 0x10, //REPORT_COUNT (16)
0x75, 0x01, //REPORT_SIZE (1)
0x81, 0x02, //INPUT(Data, Var, Abs)
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x30, //USAGE (X)
0x09, 0x31, //USAGE (Y)
0x09, 0x32, //USAGE (Z)
0x09, 0x33, //USAGE (Rx)
0x15, 0x81, //LOGICAL_MINIMUM(-127)
0x25, 0x7f, //LOGICAL_MAXIMUM(127)
0x75, 0x08, //REPORT_SIZE(8)
0x95, 0x04, //REPORT_COUNT(4)
0x81, 0x02, //INPUT(Data,Var,Abs)
0xc0, //END_Collection
0xc0 //END_Collection
};
當我編譯它,我不明白的錯誤,但上傳到設備後,我得到了「此設備無法啓動(代碼10)。」消息在設備配置文件中。這是目前我在測試中導致此問題的唯一改變。
如果你仍然覺得在Arduino部分可以更好地問這個問題,我可以在那裏發帖,但我認爲這是我做錯了描述符的更多的東西。
我真的很感謝任何人的時間和幫助!請讓我知道是否有更多有助於發佈的信息。