idea6410 tslib&qt移植

来源:互联网 发布:js input 显示隐藏 编辑:程序博客网 时间:2024/05/17 04:13

在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。

  Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

1、在https://github.com/kergoth/tslib下载了最新的tslib

2、为虚拟机里的Linux系统安装工具:

sudo apt-get install autoconf

sudo apt-get install automake

sudo apt-get install libtool

3、查看交叉工具编译器,如果没有则配置

xiao@urbetter-ubuntu:~$ $PATH
-bash: /home/song/cross_compile/jdk1.6.0_26/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin/: 没有那个文件或目录
xiao@urbetter-ubuntu:~$ export PATH=$PATH:/usr/local/arm/4.3.2/bin/

如果不配置编译也不会出问题,但是把ts_test这个可执行文件拷贝到电路板上, 结果运行时出现这个错误ts_test: line 1: syntax error: unexpected "("


4、解压后编译

mv xxx(解压后名字) tslib  //名字改为tslib 

cd tslib

./autogen.sh 

mkdir tmp

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache

./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp

make

make install

5、打开tmp目录,里面有四个文件夹,分别是bin、etc、include、lib。将etc目录下的ts.conf里的第2行去掉注释。即:

# module_raw input

改为:

module_raw input(需顶格否则出错)


解析:

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提供的触摸屏坐标变换插件。

6、将bin、etc、lib目录下的文件及连接拷贝到文件系统下对应同名目录。include目录估计是编译应用程序时用的,在此可以不使用

7、在文件系统的/etc/profile后面添加以下环节变量:

export USER LOGNAME PS1 PATH

export TSLIB_TSDEVICE=/dev/event1           //查看节点cat /proc/bus/input/devices 

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0


解析:

# 指定触摸屏设备
export TSLIB_TSDEVICE=/dev/event1
# 指定触摸屏校准文件pointercal存放位置
export TSLIB_CALIBFILE=/etc/pointercal
# 指定TSLIB配置文件的位置
export TSLIB_CONFFILE=/etc/ts.conf
# 指定触摸屏插件所在路径
export TSLIB_PLUGINDIR=/lib/ts
# 指定帧缓冲设备
export TSLIB_FBDEVICE=/dev/fb0
# 设定控制台设备为none
# 否则默认为/dev/tty,
# 这样会出现”open consol device:No such file or directory KD…..”的错误
export TSLIB_CONSOLEDEVICE=none

8、执行ts_test或ts_calibrate命令

#./ts_calibrate   (校正坐标,可以显示个坐标值)

#./ts_test    (测试)


到此应该tslib就ok了~

问题汇总:

问题1:
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: Error 40
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory
解决方法:
#echo $LD_LIBRARY_PATH              // 查看lib路径
#export LD_LIBRARY_PATH=$TSLIB_ROOT/lib

问题2:
ts_open: No such file or directory
解决方法:
#export TSLIB_TSDEVICE=/dev/input/event0     // 触摸屏设备路径

问题3:
Couldnt open tslib config file: No such file or directory
ts_config: Illegal seek
解决方法:
#export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

问题4:
Couldnt load module pthres No raw modules loaded.
ts_config: Success
解决方法:
#export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

问题5:
No raw modules loaded.
ts_config: No such file or directory
解决方法:
修改$TSLIB_ROOT/etc/ts.conf,至少放开一个module_raw,打开tslib-1.4/etc/ts.conf文件,
去掉其中一个modules_raw前面的#符号,并删除空格即可并去掉前面空格


第二部分:qt5.1移植

1、qt5.1下载地址http://download.qt-project.org/archive/

原创粉丝点击