软件平台:Android 4.0

问题描述:

 今天在调试电容屏驱动,将Android 2.3的驱动代码直接移植到4.0中,发现触摸屏不能用;

由于硬件已事先在Android2.3上验证过,首先排除了硬件上的问题;触摸屏驱动也在2.3平台上能正

常使用,为什么移植到4.0上就出现问题了呢?

 

测试步骤:

1、getevent查看事件发现事件上报正常;

2、加串口打印,发现触摸点坐标也正常;

难道底层没问题,而是应用层有问题了?这时突然想起前几日在4.0平台上移植过电阻屏驱动,为什么

电阻屏能正常工作而电容屏却不行了?看来问题还在触摸屏驱动里面。

 

通过对比两者驱动代码,找到了问题的原因:

原来在电阻屏驱动中,每次上报事件结束时都有报如下两句:

input_report_key( input_dev , BTN_TOUCH , 1);    // pressed

input_report_key( input_dev , BTN_TOUCH , 0);    // realse

在电容屏驱动中却没有,加上之后电容屏工作正常。

 

之后在网上搜索了一下才知道Andorid 的 touchscreen 事件必须要有  BTN_TOUCH 才可以。

所以初始化的时候加上:

tablet_dev->keybit[BIT_WORD (BTN_TOUCH)] = BIT_MASK (BTN_TOUCH);

 报事件的时候加上

input_report_key( input_dev , BTN_TOUCH , 1);    // pressed

input_report_key( input_dev , BTN_TOUCH , 0);    // realse

至于为什么会这样现在还没来得及分析,待以后弄清楚了补上。


以上为转载,以做保留。


通常我们在用git时会比较两个版本的不同,这时候我们会用到git diff,

加上--color diff 以显示语法高亮,这时候我们可以看到代码不同之处。

那我们如何做修改呢?即如何在某一个版本的代码上添加另一个版本的修改,使得这部分的内容一致。

这时候我们可以使用patch命令,用git diff 先生成一个patch,而后用patch命令打上。

具体实例为:


git diff ~/.../.../test.cpp >test.patch

将test.patch拷贝到要修改的目录下,

执行patch -p1 <~/.../.../test.patch

这里的p1指的是目录的层数,一般我们的git diff 都会在当前目录下的前面加上一个a,b以做区分,例如 a/.../... , b/.../...

所以我们需要是用p后面的1来去掉这层目录

通常情况下,如果没有a, b这层额外添加的目录,只需使用-p0即可,而如果有多层n,则需要用-pn。


Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐