hexdump命令调试多点触摸屏
以两个点为例,说明需要上报的数据格式
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的触点正在移动时:
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就像一个全局变量一样:如果它没变化的话,就无需再次设置):
// 刚刚设置了ABS_MT_SLOT为0,它对应ID为45,这里设置ID为-1就表示ID为45的触点被松开了
EV_ABS ABS_MT_TRACKING_ID -1
EV_SYNC SYN_REPORT 0 // 全部数据上报完毕
最后,松开ID为46的触点:
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,执行以下命令:
hexdump /dev/input/event0
然后用一个手指点击触摸屏,得到类似如下的数据:

在上面的数据中,为了兼容老程序,它也上报了ABS_X、ABS_Y数据,电阻触摸屏就是使用这类型的数据。所以基于电阻屏的程序,也可以用在电容屏上。
使用两个手指点击触摸屏时,得到类似如下的数据:

为了兼容老程序,它也上报了ABS_X、ABS_Y数据,但是只上报第1个触点的数据。