触摸屏驱动的改写一
时间:2016-12-14作者:华清远见
1、项目需求-Qt相关: 开发平台:开源平板 这次项目我们用的是开源平板平台,在上面跑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 接着我们看我们的代码: 找到下图位置的代码。 是不是和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程序可以完美的运行。
相关资讯
发表评论
|