tslib移植

来源:互联网 发布:linux虚拟机共享文件 编辑:程序博客网 时间:2024/05/22 18:40
1. tslib是什么
    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:cvs@pubcvs.arm.linux.org.uk:/mnt/src/cvsroot
#cvs login
(passwd: anoncvs)
#cvs co tslib
       开始我并不知道这个官方服务器,我在网上找到两个版本:1.3 及 1.4,还有个叫release
1.0 的,   我用的就是这个,           其实也就是tslib 1.4。          我后来看到有文档说了这个官方下载方式后,
也曾想连接上看看有没有最新版本,                         但我没有能够链接上这个服务器,                    如果你能够链接上去,
或者看到其他更新,麻烦转告本人一下。我下载的版本的地址是
http://prdownload.berlios.de/tslib/tslib-1.0.tar.bz2
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 1.4 的源代码里面
TSLIB_TSEVENTTYPE
没有找到这个参数,这
                                       个参数应该已经没有什么用了
                                  控制台设备文件名
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进
行校正,如果能够正常校正,恭喜你,你可以做其他事情了,如果不能,查查什么地方配置
错了吧。
    我还看到有什么tscalib,好像也是触屏的库,但我没有兴趣研究了,有兴趣研究的朋友
可以试试,下面是别人文档里给出的tscalib和tslib的下载地址,我附下面
http://repository.maemo.org/pool/maemo/ossw/source/t/tscalib/
http://repository.maemo.org/pool/maemo/ossw/source/t/tslib/
由于上次发的时候是直接从word里面copy过来的,                         发布界面里面格式没有问题,        查看时有些
格式错乱了,看起来有些困难,可能造成理解上的偏差。我这次先复制的文本编辑器里面,
将格式去掉后,在发布界面里在调整成合适的格式。