CH549G 绝对移动 win系统 没反应

使用相对移动的描述符时,移动成功:

  HIDMouse[0] = 0x00;    // 鼠标左键释放
	HIDMouse[1] = Xoutdata[0];        // X axis data low 8bit
	HIDMouse[2] = Xoutdata[1];   // Y axis data high 8bit
  // 等待Endp2不忙
  while (Endp2Busy)
    ; // 如果忙(上一包数据没有传上去),则等待。
  // 发送HIDMouse数组
  Enp2IntIn(HIDMouse, sizeof(HIDMouse));

但是使用了绝对移动描述符后,移动失败,抓包只有数据但是不鼠标移动:

0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
				0x09, 0x02,        // Usage (Mouse)
				0xA1, 0x01,        // Collection (Application)
				0x09, 0x01,        //   Usage (Pointer)
				0xA1, 0x00,        //   Collection (Physical)
				0x05, 0x09,        //     Usage Page (Button)
				0x19, 0x01,        //     Usage Minimum (0x01)
				0x29, 0x03,        //     Usage Maximum (0x03)
				0x15, 0x00,        //     Logical Minimum (0)
				0x25, 0x01,        //     Logical Maximum (1)
				0x95, 0x03,        //     Report Count (3)
				0x75, 0x01,        //     Report Size (1)
				0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
				0x95, 0x01,        //     Report Count (1)
				0x75, 0x05,        //     Report Size (5)
				0x81, 0x01,        //     Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
				0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
				0x09, 0x30,        //     Usage (X)
				0x15, 0x00,        //     Logical Minimum (0)
				0x26, 0x80, 0x07,  //     Logical Maximum (1920)
				0x35, 0x00,        //     Physical Minimum (0)
				0x46, 0x80, 0x07,  //     Physical Maximum (1920)
				0x75, 0x10,        //     Report Size (16)
				0x95, 0x01,        //     Report Count (1)
				0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
				0x09, 0x31,        //     Usage (Y)
				0x15, 0x00,        //     Logical Minimum (0)
				0x26, 0x80, 0x07,  //     Logical Maximum (1920)
				0x35, 0x00,        //     Physical Minimum (0)
				0x46, 0x80, 0x07,  //     Physical Maximum (1920)
				0x75, 0x10,        //     Report Size (16)
				0x95, 0x01,        //     Report Count (1)
				0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
				0x09, 0x38,        //     Usage (Wheel)
				0x15, 0x81,        //     Logical Minimum (-127)
				0x25, 0x7F,        //     Logical Maximum (127)
				0x75, 0x08,        //     Report Size (8)
				0x95, 0x01,        //     Report Count (1)
				0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
				0xC0,              //   End Collection
				0xC0,              // End Collection
这是绝对移动的代码:
  HIDMouse[0] = 0x00;    // 鼠标左键释放
	HIDMouse[1] = Xoutdata[0];        // X axis data low 8bit
	HIDMouse[2] = Xoutdata[1];   // X axis data high 8bit
	HIDMouse[3] = Youtdata[0];        // Y axis data low 8bit
	HIDMouse[4] = Youtdata[1]; // Y axis data high 8bit
  // 等待Endp2不忙
  while (Endp2Busy)
    ; // 如果忙(上一包数据没有传上去),则等待。
  // 发送HIDMouse数组
  Enp2IntIn(HIDMouse, sizeof(HIDMouse));

请问这个是什么问题?


这是bus hound这个工具里抓到的数据image.png


可以先确定下上传按下和松开是否有效?

另外如果是绝对鼠标的话,上传的数据就相当于坐标了,X和Y的数据根据描述符应该在0-1920之间。

测试移动就应该上传不同的坐标点,而不能一直上传同一个坐标点。


问题是我传同一个坐标,鼠标不移动。单独的 左键或右键按下松开也没有效


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