2016-12-14 8 views
0

두 개의 라이브러리를 사용하고 송신기/컨트롤러 입력을 HID 입력으로 변환하는 어댑터 (PPM을 사용하지만이 게시물의 경우 중요하지 않다고 생각합니다)에서 작업하고 있습니다. 나는 Arduino를 사용하고 있지만 오해가 아닌 한 내 문제는 내 Arduino 코드가 아닌 HID Report Descriptor에 있기 때문에 여기에 게시합니다.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 
}; 

I 버튼이있는 기술자를 만들려고 만 그래서 스틱, 아니 버튼이 있습니다 첫 번째 샘플 . 나는 그것을 컴파일 할 때, 나는 오류를 얻을하지 않습니다

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 


}; 

하지만, 장치에 업로드 후 내가 얻을 : 나는 HID 설명자 도구를 사용하여 생성 된 프로파일이는 "이 장치를 시작할 수 없습니다 (코드 10)." 장치 프로파일의 메시지. 이것은 현재이 문제를 일으키는 테스트에서 변경하는 유일한 것입니다.

Arduino 섹션에서 더 잘 요청할 수 있다고 생각 되시면 게시 할 수 있지만 이것이 제가 디스크립터에 잘못되어 있다고 생각합니다.

정말 시간과 도움을 주셔서 감사합니다! 게시하는 데 도움이되는 정보가 더 있으면 알려주십시오.

답변

1

간단한 실현 후 문제가 분류되었습니다. usbHidReportDescriptor 파일에서 찾은 파일을 찾은 다음 조정할 필요가있는 usbconfig.h 파일에 길이에 대한 정의가 있음을 알았습니다. 누군가에게 줄을 서서 똑같은 문제가있는 경우에 대비하여이 글을 게시하십시오!