zoukankan      html  css  js  c++  java
  • 【学习笔记】TSlib校准原理

    https://blog.csdn.net/tianxie22008/article/details/5639564
    在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘
    故,触摸屏容易存在点击不准确、有抖动等问题。
    tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功
    能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在qtopia 4.版本
    中,默认的tslib版本为tslib 1.4。在qtopia 2.
    版本中,默认的tslib版本为tslib 1.3。
    tslib 的官方下载地址为一个cvs 服务器,下载方法为:

    #export CVSROOT=:pserver:cvs@pubcvs.arm.Linux.org.uk:/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 文件
    //autogen.sh

    #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
    

    以上环境变量在实际开发中的实际配置可以根据实际情况决定。


    1. 配置文件
      除了环境变量以外,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 门槛值为触摸屏的
    灵敏指标,一般不需要进行变动,参考参考值即可。

    作者:Dozeoo
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    C# 抽象(3)
    C# 抽象(2)
    C# 抽象
    将 varchar 值 'ACCE5057EC423F7C' 转换成数据类型 int 时失败
    处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表
    方法调用 Controller的Action 参数
    A problem has been detected and windows has been shut down to prevent damage to your computer.他么啥意思?看这里!【蓝屏】
    自己搭建了一个简单实用的Web版记事本
    GRPC
    Ocelot Consul
  • 原文地址:https://www.cnblogs.com/nightnine/p/14720798.html
Copyright © 2011-2022 走看看