USB多点触控上报协议详解

USB HID-compliant mouse报点协议解析


本篇文章主要是对usb 多点触控给Windows上报点位时上报的数据解析。至于usb怎样枚举出一个多点触控在这不做解释,网上有很多教程。
1、当你的usb hid设备枚举正常后,你可以使用bus hound看到你的usb 设备里有一个新增的HID-compliant mouse接口。可以通过usbTreeView查看对应的端点,我这里的该接口对应的是端点1。所以上报触摸点时,通过端点1上报就好。
USB多点触控上报协议详解_第1张图片.
2、windows要知道你的触摸状态,必须要知道你有几个点上报,每个点的状态(按下还是松开),每个点对应的id(也就是对应的手指id),每个点的坐标。由上面的端点描述可以看到bInterval = 0x01(1ms),也就是说windows这边时1ms找我们要一次触摸点的坐标,当我们有坐标点更新时就上传坐标点,当没有触摸时,直接NAK就好。
3、数据报文来了。举个例子

0 1 2 3 4 5 6 7 8 9 10 11 12 13
0x02 0x07 0x00 0x00 0x04 0x00 0x04 0x06 0x01 0x00 0x08 0x00 0x08 0x02
设备 ID 第一个点触摸状态 手指ID X坐标低8位 X坐标高8位 Y坐标低8位 Y坐标高8位 第二点触摸状态 手指ID X坐标低8位 X坐标高8位 Y坐标低8位 Y坐标高8位 此包中的有效点数
设备ID固定值 被按下 手指id为0x00 X坐标为0x0400 计算下来为1024 Y坐标为0x0400 计算下来为1024 被释放 手指id为0x01 X坐标为0x800 计算下来为2048 Y坐标为0x0800 计算下来为2048 有点数为2个

上面的报文(0x02,0x07,0x00,0x00,0x04,0x00,0x04,0x06,0x01,0x00,0x08,0x00,0x08,0x02)的意思就是0号手指被按下,其坐标点为(1024,1024),1号手指被释放,释放的位置坐标点为(2048,2048)。依此类推,如果需要报第三点、第四点等按照上面的格式添加数据就可以了。

你可能感兴趣的:(USB多点触控上报协议详解)