当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 触摸屏驱动的改写一
触摸屏驱动的改写一
时间:2016-12-14作者:华清远见

1、项目需求-Qt相关:

开发平台:开源平板
        开发环境:ubuntu 10.10
        Linux源码:linux 3.0.8
        Qt开发工具: Qtsdk

这次项目我们用的是开源平板平台,在上面跑Qt程序,因此需要触摸功能。那怎样实现触摸功能呀。

首先,我们的平板上可以跑android,只要把android镜像烧到flash,只要启动起来触摸屏就可以用,并且还支持多点触控。说明里面有我们要的驱动,我努力的找到了平板的驱动源码.c文件,那该怎样进行修改,这是个难题。

源码路径:$ cd ~/fspad-702/lichee/linux-3.0/drivers/input/touchscreen/

平板的源码有了,该怎样修改?这里我们有以前在A8上能运行Qt的linux源码。

源码路径:、linux-2.6.35\drivers\input\touchscreen\s3c3410_ts.c。

建议先看总体分析: input子系统 KeyPad-Touch上报数据格式与机制.doc
        地址://blog.csdn.net/android_huber

接着我们看我们的代码:
        $ vim s3c2410.c

找到下图位置的代码。

是不是和input子系统 KeyPad-Touch上报数据格式与机制.doc里的讲解代码很相似。这里我们用的是单点触摸方式。

此段代码是按下时上传部分。

Down: 按下

Input_report_ads():把信息提交到上层

要注意这里我们用到的是input_sync();

此段是抬起时上传的部分。

这里else 代表的是弹起。

首先我们应该知道input被看做是一个设备,对一个设备来说。一定要init,register,open等等。

Register 部分以红色部分为主,其他的代码不用修改。

Input_set_abs_parms(); 设置触摸屏的参数如长宽的范围、触摸的方式等。

以上是A8触摸屏的驱动代码部分分析,A8上的Qt应用程序已经跑起来。点击触摸屏可以实现相应反应。

开源平板pad的触摸屏是电容屏,并且触摸屏的驱动是多点触控的。那我们就可以参考A8上的触摸屏代码。

虽然触摸设备不一样,驱动源码也大不相同,但它们的原理是一样。还是一样我们只关心设备注册和触摸位置信息的上传。

PAD触摸驱动源码:

$ vim ~/fspad-702/lichee/linux-3.0/drivers/input/touchscreen/ssd253x-ts.c

1、register部分

1、未改之前代码:

Ssi_input->evbit[ ] evbit字段用于描述支持的事件,这里支持按键事件、绝对事件、同步事件。

Ssi_input->keybit[ ] 描述按键的类型。

BTN_TOUCH类型来表示触摸屏的点击

注册部分:

2、修改之后:

点击上报信息部分(未改时):

上报部分改之后:

就这么简单,平板上的触摸屏可以完好的运作启来了。Qt程序可以完美的运行。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)