## hexdump命令调试多点触摸屏 以两个点为例,说明需要上报的数据格式 ```c EV_ABS ABS_MT_SLOT 0 // 这表示“我要上报一个触点信息了”,用来分隔触点信息 EV_ABS ABS_MT_TRACKING_ID 45 // 这个触点的ID是45 EV_ABS ABS_MT_POSITION_X x[0] // 触点X坐标 EV_ABS ABS_MT_POSITION_Y y[0] // 触点Y坐标 EV_ABS ABS_MT_SLOT 1 // 这表示“我要上报一个触点信息了”,用来分隔触点信息 EV_ABS ABS_MT_TRACKING_ID 46 // 这个触点的ID是46 EV_ABS ABS_MT_POSITION_X x[1] // 触点X坐标 EV_ABS ABS_MT_POSITION_Y y[1] // 触点Y坐标 EV_SYNC SYN_REPORT 0 // 全部数据上报完毕 ``` 当ID为45的触点正在移动时: ```c EV_ABS ABS_MT_SLOT 0 // 这表示“我要上报一个触点信息了”,之前上报过ID,就不用再上报ID了 EV_ABS ABS_MT_POSITION_X x[0] // 触点X坐标 EV_SYNC SYN_REPORT 0 // 全部数据上报完毕 ``` 松开ID为45的触点时(在前面slot已经被设置为0,这里这需要再重新设置slot,slot就像一个全局变量一样:如果它没变化的话,就无需再次设置): ```c // 刚刚设置了ABS_MT_SLOT为0,它对应ID为45,这里设置ID为-1就表示ID为45的触点被松开了 EV_ABS ABS_MT_TRACKING_ID -1 EV_SYNC SYN_REPORT 0 // 全部数据上报完毕 ``` 最后,松开ID为46的触点: ```c EV_ABS ABS_MT_SLOT 1 // 这表示“我要上报一个触点信息了”,在前面设置过slot 1的ID为46 EV_ABS ABS_MT_TRACKING_ID -1 // ID为-1,表示slot 1被松开,即ID为46的触点被松开 EV_SYNC SYN_REPORT // 全部数据上报完毕 ``` 举例说明:电容屏的实验数据 假设你的开发板上电容屏对应的设备节点是`/dev/input/event0`,执行以下命令: ```bash hexdump /dev/input/event0 ``` 然后用一个手指点击触摸屏,得到类似如下的数据: ![](media/1632661914280.png) 在上面的数据中,为了兼容老程序,它也上报了ABS_X、ABS_Y数据,电阻触摸屏就是使用这类型的数据。所以基于电阻屏的程序,也可以用在电容屏上。 使用两个手指点击触摸屏时,得到类似如下的数据: ![](media/1632661936224.png) 为了兼容老程序,它也上报了ABS_X、ABS_Y数据,但是只上报第1个触点的数据。