请问在CH582芯片上将蓝牙触摸屏例程移植到复合HID设备中无法使用

   请问在CH582芯片上将蓝牙触摸屏例程移植到复合HID设备中,在电脑上可以用,安卓设备上无法使用是什么原因。描述符如下:

/* 多媒体 */


    0x05, 0x0C, 0x09, 0x01, 0xA1, 0x01,

    0x85, HID_RPT_ID_CONSUMER_IN, 0x05, 0x0C, 0x19, 0x00, 0x2A, 0xFF, 0x03,

    0x95, 0x01, 0x75, 0x10, 0x15, 0x00, 0x26, 0xFF, 0x03, 0x81, 0x00,

    0x05, 0x07, 0x19, 0x00, 0x29, 0xFF, 0x75, 0x08, 0x26, 0xFF, 0x00, 0x81, 0x00, 0x81, 0x01,

    0x06, 0x00, 0xFF, 0x0A, 0x03, 0xFE, 0x0A, 0x04, 0xFE, 0x75, 0x01, 0x95, 0x02, 0x25, 0x01, 0x81, 0x02,

    0x0A, 0x05, 0xFF, 0x95, 0x01, 0x75, 0x05, 0x25, 0x1F, 0x81, 0x02,

    0x75, 0x01, 0x81, 0x01, 0x1A, 0x01, 0xFD, 0x2A, 0xFF, 0xFD, 0x15, 0x01,

    0x26, 0xFF, 0x00, 0x75, 0x08, 0x81, 0x00, 0x0A, 0x02, 0xFF, 0x26, 0xFF, 0x00, 0x15, 0x00, 0x81, 0x02, 0xC0,


 /* 触摸屏 */

    0x05, 0x0D, // Usage Page (Digitizer)

    0x09, 0x04, // Usage (Touch Screen)

    0xA1, 0x01, // Collection (Application)

    0x85, HID_RPT_ID_MOUSE_IN, /* REPORT_ID (01) */


    0x05, 0x0D, //   Usage Page (Digitizer)

    0x09, 0x22, //   Usage (Finger)

    0xA1, 0x02, //   Collection (Logical)

    0x05, 0x0D, //     Usage Page (Digitizer)

    0x09, 0x42, /* USAGE (TIP SWITCH) */

    0x15, 0x00, //     Logical Minimum......... (0)

    0x25, 0x01, //     Logical Maximum......... (1)

    0x75, 0x01, //     Report Size............. (1)

    0x95, 0x01, //     Report Count............ (1)

    0x81, 0x02, //     Input...................(Data, Variable, Absolute)

    0x75, 0x07, //     Report Size............. (7)

    0x95, 0x01, //     Report Count............ (1)

    0x81, 0x01, //     Input...................(Constant)

    0x09, 0x51, /* USAGE (Contact Identifier) */

    0x75, 0x08, //     Report Size............. (8)

    0x95, 0x01, //     Report Count............ (1)

    0x81, 0x02, //     Input...................(Data, Variable, Absolute)

    0x05, 0x01, //     Usage Page (Generic Desktop)

    0x09, 0x30, //     Usage (X)

    0x15, 0x00, //     Logical Minimum......... (0)

    /*48 49 50*/

    0x26, (uint8_t)DEF_DESKTOP_X_MAX, (uint8_t)(DEF_DESKTOP_X_MAX >> 8), /* LOGIC_MAX (0X0800) */

    0x75, 0x10,                                                          //     Report Size............. (16)

    0x95, 0x01,                                                          //     Report Count............ (1)

    0x81, 0x02,                                                          //     Input...................(Data, Variable, Absolute)

    0x09, 0x31,                                                          //     Usage (Y)

    0x15, 0x00,                                                          //     Logical Minimum......... (0)

    /*61 62 63*/

    0x26, (uint8_t)DEF_DESKTOP_Y_MAX, (uint8_t)(DEF_DESKTOP_Y_MAX >> 8), /* LOGIC_MAX (0X0800) */

    0x75, 0x10,                                                          //     Report Size............. (16) 64 65

    0x95, 0x01,                                                          //     Report Count............ (1)  66 67

    0x81, 0x02,                                                          //     Input...................(Data, Variable, Absolute) 68 69

    0xC0,                                                                //   End Collection 70

    0xc0,


    /* 键盘*/

    0x05, 0x01,     // Usage Pg (Generic Desktop)

    0x09, 0x06,     // Usage (Keyboard)

    0xA1, 0x01,     // Collection: (Application)

    0x85, HID_RPT_ID_KEY_IN,     //   ReportID (1)

    //

    0x05, 0x07,     // Usage Pg (Key Codes)

    0x19, 0xE0,     // Usage Min (224)

    0x29, 0xE7,     // Usage Max (231)

    0x15, 0x00,     // Log Min (0)

    0x25, 0x01,     // Log Max (1)

    //

    // Modifier byte

    0x75, 0x01,     // Report Size (1)

    0x95, 0x08,     // Report Count (8)

    0x81, 0x02,     // Input: (Data, Variable, Absolute)

    //

    // Reserved byte

    0x95, 0x01,     // Report Count (1)

    0x75, 0x08,     // Report Size (8)

    0x81, 0x01,     // Input: (Constant)


    // LED report

    0x95, 0x05, // Report Count (5)

    0x75, 0x01, // Report Size (1)

    0x05, 0x08, // Usage Pg (LEDs)

    0x19, 0x01, // Usage Min (1)

    0x29, 0x05, // Usage Max (5)

    0x91, 0x02, // Output: (Data, Variable, Absolute)

    //

    // LED report padding

    0x95, 0x01, // Report Count (1)

    0x75, 0x03, // Report Size (3)

    0x91, 0x01, // Output: (Constant)


    // Key arrays (6 bytes)

    0x95, 0x06,     // Report Count (6)

    0x75, 0x08,     // Report Size (8)

    0x15, 0x00,     // Log Min (0)

    0x25, 0x65,     // Log Max (101)

    0x05, 0x07,     // Usage Pg (Key Codes)

    0x19, 0x00,     // Usage Min (0)

    0x29, 0x65,     // Usage Max (101)

    0x81, 0x00,     // Input: (Data, Array)

    //

    0xC0,            // End Collection



void hidEmuSendTouchReport(uint8_t *data)

{

    uint8_t buf[6];


    buf[0] = data[1];                  // touch or not

    buf[1] = 1;                     // touch ID

    buf[2] = data[2];        // X axis data low 8bit

    buf[3] = data[3]; // X axis data high 8bit

    buf[4] = data[4];        // Y axis data low 8bit

    buf[5] = data[5]; // Y axis data high 8bit


    HidDev_Report(HID_RPT_ID_MOUSE_IN, HID_REPORT_TYPE_INPUT,

                  6, buf);

}


使用不同的设备蓝牙连接的报表描述符可能不一样,确认一下在移植之前的程序连接不同设备是可以使用的。

如果不可用,需要进行抓包查看,如某蓝牙触摸屏连接安卓设备是可行,移植后不可行。抓包对比描述符的差异。


只有登录才能回复,可以选择微信账号登录