在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
一、编译环境
linux环境:ubuntu-10.10
交叉编译:4.3.3
arm板子:tq2440
二、交叉编译
# ./autogen.sh
# ./configure --host=arm-linux --prefix=/nfs/tslib
# make
# make install
三、配置文件
配置文件ts.conf内容如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/input/event0),其它的删除掉。后面的几个module还没有深入了解,它们使用的库就在tslib/lib/ts中,最后三个模块的字面意思是“方差(滤波)”、“去抖动(去噪)”、“线性(坐标变换)”。
四、挂载到tq2440的mnt目录下
# cd /mnt
# mkdir tslib
# mount -t nfs 192.168.2.105:/nfs/tslib /mnt/nfs -o nolock
将/mnt/nfs目录下的所有内容都拷贝到/mnt/tslib目录下。lib中是生成的库文件,该目录下还有一个子目录ts,它包含了许多校准用到的库(如input.so等);etc下的ts.conf为配置文件,板子的触摸屏设备文件描述符默认值是/dev/input/event0(可以在配置文件ts.conf中设置这个环境变量);bin目录下为校准、测试工具(如校准的ts_calibrate,测试用的ts_test)。
在客户端执行以下设置:
# export TSLIB_ROOT=/mnt/tslib
# export TSLIB_TSDEVICE=/dev/event0
# export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
# export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
# export TSLIB_CALIBFILE=/etc/pointercal
# export TSLIB_CONSOLEDEVICE=none
# export TSLIB_FBDEVICE=/dev/fb0
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
使用TSLIB_ROOT这个变量比较好,因为只要将编译生成后的tslib文件夹复制到某个位置,再修改这个变量即可,其它的不用修改。
五、测试
运行校准程序,触摸屏依次出现5个点,依次点击。运行结束会在/etc目录下会生成一个叫pointercal的校准文件。
# ./ts_calibrate
xres = 320, yres = 240
Took 7 samples...
Top left : X = 228 Y = 720
Took 6 samples...
Top right : X = 806 Y = 746
Took 4 samples...
Bot right : X = 788 Y = 277
Took 3 samples...
Bot left : X = 210 Y = 306
Took 2 samples...
Center : X = 524 Y = 523
-26.359863 0.380360 -0.015708
282.763000 -0.000722 -0.315696
Calibration constants: -1727520 24927 -1029 18531156 -47 -20689 65536
如果想运行ts的测试程序,在tslib/bin目录下输入“./ts_test“即可。屏幕最上方会出现三个按钮,分别为“Drag”、“Draw”和“Quit”,默认是第一个。因此,用触摸笔点击任何一处,十字光标便会移动到那里。点击屏幕上“Quit”或按Ctrl+C可退出该程序。下面是点击“Draw”按钮并用触摸笔写字的一小部分提示信息(第一列为timeval结构体的两个成员:tv_sec和tv_usec,中间两列分别是X和Y的坐标,最后为pressure,这里可以理解成“触摸事件”,为1表示触摸笔点击了(接触)屏幕,为0表示触摸笔离开了屏幕):
1341848864.846208: 37 183 1
1341848864.861204: 39 185 1
1341848864.876205: 42 188 1
1341848864.906184: 58 191 0
1341848865.131203: 72 159 1
1341848865.146223: 71 159 1
1341848865.161203: 70 159 1
1341848865.176283: 68 159 0
1341848865.211195: 45 167 1
1341848865.226186: 43 167 1
1341848865.241209: 41 166 1
1341848865.256206: 38 165 1
1341848865.271206: 36 164 1
1341848865.286205: 32 163 1
1341848865.301205: 30 162 1
1341848865.316191: 28 161 0
1341848865.346196: 31 160 1
阅读(3006) | 评论(0) | 转发(0) |