【学习笔记】TSlib校准原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【学习笔记】TSlib校准原理#export CVSROOT=:pserver:cvs@:/mnt/src/cvsroot
#cvs login
#cvs co tslib
获得Tslib 的源代码后,需要⾸先进⾏编译,下⾯以Tslib 1.4 为例介绍Tslib 的编译过程:
#cd ../tslib1.4
//指定交叉编译⼯具
# export CC=/usr/local/ arm-Linux-4.1.1 /bin/arm-Linux-gcc
//⽣成config ⽂件
#export PATH=/usr/local/ arm-Linux-4.1.1/bin:$PATH
//避免检查ac_cv_func_malloc_0_nonnull
#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-Linux.cache
//配置⽬标机、缓冲、安装路径
#./configure --host=arm-Linux --cache-file=arm-Linux.cache --prefix=/opt/tslib1.4
# make
# make install
这样就可以在/opt/tslib1.4 ⽬录下看到相关的应⽤程序、共享库、配置⽂件等了,需要说
明的是在嵌⼊式中,由于触摸屏的种类多样、质量不⼀,采⽤Tslib 的参考配置往往⽆法获得
较好的触摸屏触摸效果,同样需要经过⼤量的测试才能得到满意的配置参数,恶劣情况下,
甚⾄需要对Tslib 的算法进⾏进⼀步的优化。

下⾯就Tslib 的环境变量、配置⽂件等进⾏简要的介绍。

1. 环境变量
为了实现Tslib 的正确运⾏,需要对如下的Tslib 的环境变量进⾏配置:
TSLIB_TSDEVICE //触摸屏设备⽂件名。

Default (no inputapi): /dev/touchscreen/ucb1x00
Default (inputapi): /dev/input/event0
TSLIB_CALIBFILE //校准的数据⽂件,由ts_calibrate 校准程序⽣成。

Default: ${sysconfdir}/pointercal
TSLIB_CONFFILE //配置⽂件名。

Default: ${sysconfdir}/ts.conf
TSLIB_PLUGINDIR //插件⽬录
Default: ${datadir}/plugins
TSLIB_CONSOLEDEVICE //控制台设备⽂件名
Default: /dev/tty
TSLIB_FBDEVICE //设备名
Default: /dev/fb0
以上环境变量在实际开发中的实际配置可以根据实际情况决定。

2. 配置⽂件
除了环境变量以外,Tslib 的配置⽂件ts.conf 同样是个⼗分重要的部分,在ts.conf 中配置了需要加载的插件、插件加载顺序以及插件的⼀些约束参数,这些配置参数对触摸屏的触摸效果具有⼗分重要的影响。

下⾯是Tslib 1.4 中的ts.conf 的参考配置:
# Uncomment if you wish to use the Linux input layer event interface
# module_raw input
# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
# module_raw collie
# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi
# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00
# Uncomment if you're using an HP iPaq h3600 or similar
# module_raw h3600
# Uncomment if you're using a Hitachi Webpad
# module_raw mk712
# Uncomment if you're using an IBM Arctic II
# module_raw arctic2
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
其中pthres 为Tslib 提供的触摸屏灵敏度门槛插件;variance 为Tslib 提供的触摸屏滤波算
法插件;dejitter 为Tslib 提供的触摸屏去噪算法插件;linear 为Tslib 提供的触摸屏坐标变换插件。

在Qtopia 中,就触摸屏的调试问题主要涉及到以下三个部分:触摸屏驱动、Tslib、QTslibTPanelHandlerPrivate 封装。

触摸屏驱动为与硬件直接接触部分,为上层的Tslib 提供最原始的设备坐标数据,并可以
配置采样间隔、屏幕灵敏度等。

采样间隔决定了单位时间内的采样数量,在其他参数不变的
情况下,采样间隔越⼩意味着单位时间内的采样数量越多,也就意味着采样越逼真、越不容
易出现采样信息丢失如输⼊法书写时丢笔划的情况,但因为噪声的影响,采样间隔越⼩同时
也意味着显⽰出来的图形的效果越差。

Tslib 为触摸屏驱动和应⽤层之间的适配层,其从驱动处获得原始的设备坐标数据,通过
⼀系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕
坐标。

在tslib 中为应⽤层提供了2 个主要的接⼝ts_read()和ts_read_raw(),其中ts_read()为正常
情况下的借⼝,ts_read_raw()为校准情况下的接⼝。

正常情况下,tslib 对驱动采样到的设备坐标进⾏处理的⼀般过程如下:
raw device --> variance --> dejitter --> linear --> application
module module module
校准情况下,tslib 对驱动采样到的数据进⾏处理的⼀般过程如下:
raw device--> Calibrate
QTslibTPanelHandlerPrivate 为tslib 提供了应⽤层封装,为tslib 与应⽤层的接⼝部分。

在触摸屏调试过程中,涉及到的参数主要有采样间隔(驱动)、灵敏度(驱动)、去噪
算法及约束(tslib)、去抖算法及约束(tslib)、ts 门槛值(tslib)。

由于各种相关期间的影响,在不同的硬件平台上,相关参数可能需要调整。

以上参数的
相互关系为:采样间隔越⼤,采样点越少,采样越失真,但因为信息量少,容易出现丢笔划
等丢失信息情况,但表现出来的图形效果将会越好;去噪算法跟采样间隔应密切互动,采样
间隔越⼤,去噪约束应越⼩,反之采样间隔越⼩,去噪约束应越⼤。

去抖算法为相对独⽴的
部分,去抖算法越复杂,带来的计算量将会变⼤,系统负载将会变重,但良好的去抖算法可
以更好的去除抖动,在进⾏图形绘制时将会得到更好的效果;灵敏度和ts 门槛值为触摸屏的
灵敏指标,⼀般不需要进⾏变动,参考参考值即可。

相关文档
最新文档