Arm-Linux 之 tslib

Arm-Linux 之 tslib

1.
ts lib是什么
tslib是一个开源的触摸屏支持库,它是handhelds.org上开发的,作者是Russul King,Douglas Lowder和Chris Larson。它给上层的应用程序,
为不同的触摸屏提供了一个统一的接口。它提供诸如滤波、去抖、校准之类的功能。下面是一段英文的介绍,我英文水平有限,怕翻译错了,因此直接附在下面。
Tslib About
Tslib is an abstraction layer for touchscreen panel events, as well as a filter stack for the manipulation of those events. It was created by Russell King, of arm.linux.org.uk. Examples of implemented filters include jitter smoothing and the calibration transform.
Tslib is generally used on embedded devices to provide a common user space interface to touchscreen functionality. It is supported by Kdrive (aka TinyX) and OPIE as well as being used on a number of commercial Linux devices including the Nokia 770.
2.
如何取得tslib源码
tslib 的官方下载地址为一个CVS服务器,下载方法为:
#export CVSROOT=:pserver:[email protected]:/mnt/src/cvsroot
#cvs login
(passwd: anoncvs)
#cvs co tslib

也许是因为网络的原因,我的代码并不是通过这种方式获得的。在网上可以找到两个版本:1.3及1.4,还有个叫release 1.0的,我用的就是这个,其实也就是tslib 1.4。建议使用新版本的。我的是从下面这个地址下载的
[url]http://prdownload.berlios.de/tslib/tslib-1.0.tar.bz2[/url]

3.
tslib 1.4的编译
#export PREFIX=/ usr/armlinux/tslib
#./autogen.sh
#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
#./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache
#make
#make install
对于PREFIX,可以随便指定其他目录,建议与运行环境一致。
4.
tslib 1.4的配置
tslib的config信息首先从系统的环境变量读取,从环境变量读取的参数有下面一些
TSLIB_TSEVENTTYPE
虽然很多文档提到了这个参数,但我在tslib 1.4的源代码里面没有找到这个参数,这个参数应该已经没有什么用了
TSLIB_CONSOLEDEVICE
控制台设备文件名
TSLIB_FBDEVICE
framebuffer的文件名
TSLIB_TSDEVICE
触屏的文件名
TSLIB_CALIBFILE
触屏校正信息保存文件
TSLIB_CONFFILE
tslib配置文件
TSLIB_PLUGINDIR
tslib需要加载模块所在的目录
我们可以使用下面的指令设置以上参数
#export TSLIB_CONSOLEDEVICE=none
#export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_TSDEVICE=/dev/touchscreen/0
#export TSLIB_CALIBFILE=/etc/pointercal
#export TSLIB_CONFFILE=/etc/ts.conf
#export TSLIB_PLUGINDIR=/lib/ts
tslib的还有一些config信息从TSLIB_CONFFILE所指定的文件给出,一般的这个文件的名字叫ts.conf,它给出的信息主要是指运行时需要加载哪些模块。在源码的etc目录下有个ts.conf文件, 但这个ts.conf文件是无法用的,首先他注释了加载哪个所有的module_raw, 而且他的大小超过了512个字节,因为tslib里读取ts.conf的buffer只有512个字节,超过512字节的ts.conf可能会引起不可预知的错误,所以建议选定你所需要加载的module_raw模块后,删除所有不需要的行。一个完整tslib 1.4的ts.conf文件如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
第一行告诉tslib从linux的输入设备读取数据,需要用到的模块,这里指定的模块为input,具体需要用到哪个模块,需要参考其他数据;第二行的pthres 为Tslib 提供的触摸屏灵敏度门槛插件;第三行指定的模块variance 为Tslib 提供的触摸屏滤波算法插件;第四行的dejitter 为Tslib 提供的触摸屏去噪算法插件;第五行linear 为Tslib 提供的触摸屏坐标变换插件。这些需要加载的模块从TSLIB_PLUGINDIR指定的目录加载。
5.
Tslib的测试
编译和配置完成后,将相关文件复制到arm的运行环境下,配置好后,运行ts_calibrate进行校正,如果能够正常校正,恭喜你,你可以做其他事情了,如果不能,查查什么地方配置错了吧。

[url]http://repository.maemo.org/pool/maemo/ossw/source/t/tscalib/[/url]

你可能感兴趣的:(linux,职场,休闲,tslib,arm-linux)