android4.0移植tslib

     android不提供触屏数据校正,最近一项目需要移植tslib校正电阻屏坐标,因为电阻屏的原始坐标非常不准。网上找了很多资料,并参考了一些文献终于搞定了。下面就将具体过程分享给大家。


一、android 源码包中移植tslib


1.下载tslib,注意此tslib已经经过移植,可以适合android编译 

   下载地址 http://download.csdn.net/detail/wenxiaohua_113/7503017

2.解压tslib,到目录android4.4.2/external下

3.编译tslib:

    执行:source  ./build/envsetup.sh

   进入tslib目录

   执行:mm

至此,tslib编译完成,相关的tslib库和校正程序被移至:android4.4.2/out/target/product/rk3188/system/ 目录下面


二、上面编译完成后,如果直接运行 ts_calibrate程序,会发现在android下面并没现有十字光标的校正界面出来,而是黑屏一会而,继续进入android的界面。但是串口终端的打印显示是正常了,当你在屏幕上点击五次后,完成校正。据我分析可能是android的ui界面覆盖了ts_calibrate的校正界面。下面给出一种可以显示校正界面的方法:

  即android 4.4.2/out/target/product/rk3188/system/bin目录中的surfaceflinger删除,重新打包system.


环境变量:

 export T_ROOT=/system

export LD_LIBRARY_PATH=$T_ROOT/lib

export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/graphics/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CALIBFILE=/data/data/pointercal
export TSLIB_CONFFILE=/system/tslib/ts.conf

然后运行

 ts_calibrate


至此,获得校正数据。(同时也可以使用adb 工具将校正的数据pointercal文件拿出来)获取校正数据


二、在内核的触屏驱动中使用上面的校正数据

在驱动中上报坐标的地方加上如下代码

 

int a0,a1,a2,a3,a4,a5,a6;
int x,y;
a0 = 394;
a1 = 13791;
a2 = -2087008;
a3 = -8200;
a4 = 71;
a5 = 33547940;
a6 = 65536;
x=(int) ts->event.x;
y=(int) ts->event.y;
 ts->event.x=(long) ((a2+(a0*x)+(a1*y))/a6);
 ts->event.y=(long) ((a5+(a3*x)+(a4*y))/a6);
其中a0至a7就是ts_calibrate校正的7个数据。


三、要使触屏正常工作,还需要在system/usr/idc目录添加idc文件

此时文件名字是有特殊规定的,
比如我的触屏驱动中
ts->input->name = "TSC2003_I2C_Touchscreen";
那么此时idc文件名字就必须是:TSC2003_I2C_Touchscreen.idc 
文件内容如下:
 
 # Basic Parameters
   touch.deviceType = touchScreen
   touch.orientationAware = 1
 # Size
    touch.size.calibration = diameter
    touch.size.scale = 10
    touch.size.bias = 0
    touch.size.isSummed = 0
 # Pressure
 # Driver reports signal strength as pressure.
 #
 # A normal thumb touch typically registers about 200 signal strength
 # units although we don't expect these values to be accurate.
    touch.pressure.calibration = amplitude
    touch.pressure.scale = 0.005
  # Orientation
   touch.orientation.calibration = none

重新打包system,烧到开发板上。此时触屏就能正常工作了!




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值