USB多点触控上报协议详解
【USB多点触控上报协议详解】
USB HID-compliant mouse报点协议解析
本篇文章主要是对usb 多点触控给Windows上报点位时上报的数据解析。至于usb怎样枚举出一个多点触控在这不做解释,网上有很多教程。
1、当你的usb hid设备枚举正常后,你可以使用bus hound看到你的usb 设备里有一个新增的HID-compliant mouse接口。可以通过usbTreeView查看对应的端点,我这里的该接口对应的是端点1。所以上报触摸点时,通过端点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个 |
推荐阅读
- Android|Android USB通信
- 关于usb流量分析
- 黑苹果升级10.13.4以后,usb3.0不能使用
- USB转串口|USB转四串口芯片CH9344
- Android|Android多点触摸交互处理
- USB在linux下挂载细谈
- Android 多点触控屏蔽
- cocos2d-x|cocos2d-x Android的单点触控多点触控可以使用代码来开启吗()
- fl2440USB驱动的问题
- android 多点MotionEvent的构建,多点操作屏幕,多点触碰屏幕