嵌入式爱好者

嵌入式爱好者 门户 知识库 查看内容

常用触摸屏调屏思路

2022-10-31 14:16| 发布者: Espoir| 查看: 519| 评论: 0

类目:  >  知识库     文档编号: 807

一、 常见触摸屏种类

1.电容触摸

a. I2C(如:GT911

b. USBI2CUSB

2.电阻触摸

a. ADC

b. USB接口(屏幕转接板上接一个MCU


二、 查看设备

触摸屏驱动一般是采用input子系统驱动框架实现的,所以应用层接口要遵循input框架的接口。

在命令行下输入ls -l /dev/input,可以看到现在有的输入设备


三、 查看触摸原始数据

当触摸出现问题时,可以通过查看原始数据判断是驱动层还是应用层的问题,查看原始数据的方法有以下几种:

1. cat /dev/event2

直接cat触摸事件触摸屏幕会有乱码输出;

2.hexdump

$ hexdump -d /dev/input/event0

0000000  15989  00000  18969  00004  00004  00004  00001  00009 # 其它事件

0000010  15989  00000  18969  00004  00001  00272  00001  00000 # BTN_MOUSE,按下

0000020  15989  00000  18969  00004  00003  00000  16333  00000 # ABS_X

0000030  15989  00000  18969  00004  00003  00001  09599  00000 # ABS_Y

0000040  15989  00000  18969  00004  00000  00000  00000  00000 # 同步事件

0000050  15989  00000  49415  00005  00004  00004  00001  00009 # 其它事件

0000060  15989  00000  49415  00005  00001  00272  00000  00000 # BTN_MOUSE,松开

0000070  15989  00000  49415  00005  00000  00000  00000  00000 # 同步事件

倒数第四、三、二行分别为 typecode value,在 linux/input.h 都有定义,Linux 中输入设备的事件类型有:

#define EV_SYN 0x00 // 同步事件

#define EV_KEY 0x01 // 按键事件

#define EV_REL 0x02 // 相对坐标

#define EV_ABS 0x03 // 绝对坐标

#define EV_MSC 0x04 // 其它事件

type 是事件类型,为 3 就是 EV_ABS=0x03,为 0 就是 EV_SYN=0x00(作为事件的分隔)。

code 的话根据事件类型而定,如果是 type EV_ABScode 0 就是 ABS_Xcode 1 就是 ABS_Y

然后 value 就是在 type code 的前提下的值,比如 type EV_ABScode 0 就是 ABS_X,那么 value 就代表触摸点的 x 轴绝对值。

比如 type EV_KEYcode 272 就是 BTN_MOUSEcode 330 就是 BTN_TOUCH,那么 value 1 表示按下,为 0 表示松开。比如 type EV_ABScode 24 就是 ABS_PRESSUREvalue 1 表示按下,为 0 表示松开。

测试看出触摸屏触摸产生的坐标值范围为 X:016384Y09600,同时该触摸屏没有上传 ABS_PRESSURE

3. ts_print / ts_print_raw

二者的区别在于ts_print打印出来的是经过tslib处理后的数据,ts_print_raw打印的数据是tslib处理之前的数据。

4. evtest

Evtest不仅可以打印原始数据,也可以看到事件类型。

四、 驱动层处理思路

1. 通过查看设备信息,在内核源码中找对应驱动

可以在内核源码中找对应的字符串;

2.定位触摸报点位置,可以在对应驱动中找字符串ABS

上图为电阻屏触摸驱动

3.加打印信息,进一步处理;

 

五、 应用层处理

1.通过ts_test等工具查看tslib有没有拿到数据;

2.更换tslib版本;


六、 电容屏

理论上电容屏可以不经过触摸校准,只不过不经过触摸校准可能会出现触摸效果与实际相反,需要反转触摸;

但实测如果屏幕上报数据与实际分辨率不符,qt低版本可能处理不了,需要经过手动校正;

 

 


已解决

未解决

只是看看
上一篇:CAN总线的特下一篇:am6254新建emmc分区

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2026-4-4 05:37

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部