作为基本输入设备,触摸板几乎是交互式嵌入式系统的标配。当我们知道了可以通过设备节点读取触摸板数据后,我们需要进一步优化这些直接获取的原生数据,比如去抖、消噪、校准等。
优化触摸板的 raw (原生)数据是一项十分复杂的算法任务,涉及诸如矩阵运算、行列式等高等数学,一般需要有比较扎实的数学背景的算法工程师来做,他们的其中一项杰出成果,便是今天要介绍的 tslib 库了。
没有 使用 tslib 库之前,操作触摸板设备的代码样子是这样的:(丑翻天!!)
经过 tslib 库整容之后,操作触摸板的代码是这样子的:(美轩完!!)
可以看到,使用了 tslib 库之后不仅得到了各种牛逼算法的保驾护航,而且代码更加简练,逻辑更加清晰,整个人瞬间变美变帅有没有!
因此,投资点时间来搞 tslib 库是值得的,下面以粤嵌的嵌入式课程环境为例(含粤嵌的GEC210开发板),具体操作步骤如下:
1,上网搞个源码库,如果你可爱到不会用百度,没关系,戳我下载(http://download.csdn.net/detail/vincent040/9662825)。
2,将源代码丢到Ubuntu,并通过以下命令解压到Ubuntu的家目录下:
tar xjvf tslib-1.4.tar.bz2 -C ~
3,进入源码顶层目录,依次执行如下命令:
mkdir ~/tslib
./configure --prefix=/home/xxx/tslib --host=arm-none-linux-gnueabi
make
make install
当然,我以我多年栽坑经验告诉你,以上指令哪些地方需要注意,以便节约你宝贵的生命,没错请叫我雷锋,林雷锋。
A) --prefix= 后面的路径就是你要安装 tslib 库的路径,墙裂建议设置为家目录下的空目录(比如~/tslib),因为如果设置系统其它目录的话,后期 make install 的时候会让你解决权限的问题,当你自作聪明地使用sudo的时候,系统却又可能会抱怨找不到工具链,因此除非你是 Ubuntu科学家,对系统环境变量了如指掌,否则不要用小白的身份去作死,乖乖将 --prefix 指定为 ~/tslib 即可。
B) --host= 后面就是你工具链的前缀,注意别眼花写错了。
C) make的时候,一般会出现如下错误:
这个问题怎么解决呢?莫方,我看你有缘,今日将祖传秘方传授与你(默默承认我这年龄不应有的智慧和大度):那就是,将源码顶层目录下的 config.h文件的第181行,删除!然后重新 make ,问题解决。
最后,你将会在 /home/xxx/tslib 下发现如下目录:
接下来,你需要想办法,将这一堆文件搞到开发板里面去,一般先将它们打包压缩,然后通过串口或者网络协议传输到开发板,然后在开发板中解压即可。
库都拷贝到了开发板,是不是就万事大吉了呢?非也,你辛辛苦苦干的这些活儿,开发板系统是无知无觉的,你还必须这么做:
1,将 tslib/etc/ts.config 中的第2行,由原来这个样子:
改成这个样子:
没错,就是把第 2 行前面的井号 # 和空格删除,注意,我说井号和空格,我没说井号,好之为之。
2,在开发板系统的 /etc/profile 文件中,增加如下内容(假设你把 tslib 库放到了开发板的根目录下,如果不是,以下路径请进行相应的修改):
export TSLIB_ROOT=/tslib/lib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONFFILE=/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CALIBFILE=/tslib/calibration
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib
解释一下上面的环境变量:
TSLIB_ROOT 指明TSLIB库在开发板中的具体位置,要以实际情况为准。
TSLIB_TSDEVICE 指明开发板触摸屏的设备节点文件名称。
TSLIB_FBDEVICE 指明开发板LCD的设备节点文件名称。
TSLIB_CONFFILE 指明TSLIB库的配置文件的具体位置,要以实际情况为准。
TSLIB_PLUGINDIR 指明TSLIB库的插件模块的具体位置,要以实际情况为准。
TSLIB_CONSOLEDEVICE 指明终端名称,none意为让系统自动匹配。
TSLIB_CALIBFILE 指明校正文件的位置,该文件在执行ts_calibrate之后自动生成。
LD_LIBRARY_PATH 是开发板系统的动态库链接路径
3,最后的最后,重启开发板,让系统重新读取 /etc/profile 文件的内容,有必要的话执行以下 /tslib/bin/ts_calibrate 校准屏幕,大功告成(再再一次默默承认这个年纪不该有的智慧)!
原文地址:http://vincent040.blog.51cto.com/4747533/1865256