Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4027926
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: 嵌入式

2012-07-09 23:54:45

       在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。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) |
给主人留下些什么吧!~~