1、简述
触摸屏是覆盖在显示屏表面的一层薄片,当有触摸笔接触到触摸屏时,系统中相应的驱动会得到触摸笔点击的位置,并可通知应用程序,从而实现人机交互的功能。电阻式触摸屏是比较常见的触摸屏,EM9280提供对于4线制电阻式触摸屏的支持,在定制的Linux内核中已完全实现了该触摸屏的驱动支持。
在EM9280中,触摸屏作为输入设备其设备文件为:“/dev/input/event0”。
本文将介绍EM9280 Linux环境下应用程序如何使用触摸屏设备。
2、tslib移植
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
tslib 为触摸屏驱动和应用层之间的适配层,其从驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
tslib的移植过程:
1、下载源码:git clone https://github.com/kergoth/tslib
2、转入工作目录:cd tslib
3、生成configure:./autogen.sh
4、配置,生成Makefile
./configure --host=arm-none-linux-gnueabi(平台) --prefix=/(安装目录)
--enable-debug=no
5、编译 make
6、安装 make install
在指定的安装目录下生成/bin /etc /lib /include文件夹。然后将相应目录下的文件分别复制到EM9280的根文件系统中对应目录中。
还需要进行一些参数的配置。
/etc目录下的profile需要指定 tslib的设备及路径:
export set TCLIB_TSDEVICE=/dev/input/event0
export set TCLIB_CALIBFILE=/etc/pointercal
export set TCLIB_CONFFILE=/etc/ts.conf
export set TCLIB_PLUGINDIR=/lib/ts
tslib中包括有触摸屏测试程序ts_test ,运行ts_test之前,需要先运行ts_calibrate对触摸屏进行校准。
3、触摸屏的应用程序开发
为了方便客户触摸屏应用程序开发,我们将tslib中的测试程序ts_test程序导出,利用tslib的动态库文件libts.so,可直接在英创公司提供的应用开发工具 eclipse上进行ts_test直接编译,生成具有同样功能的触摸屏测试程序。这种方式的好处是应用程序可直接利用tslib所提供的接口函数,获取到触摸屏操作后所得到的x、y坐标值,客户可方便地在此基础实现人机交互操作界面的需求。
在eclipse环境下建立一个c++ project:ts_test,该工程文件中需要导入以下文件:
ts_test.c //触摸屏测试主程序
tslib.h //定义操作ts的接口函数
libts.so //动态库,即tslib.h文件各个接口函数的具体实现
fbutils.c fbutils.h //定义和屏幕显示相关的接口函数
font.h font_8x16.c font_8x8.c //定义显示字符的font
从上述说明可以看出,和ts接口相关的主要函数定义在tslib.h libts.so这个两个文件中。
该工程文件中用到专用的动态库libts.so,在eclipse环境对此程序编译时,需要设置相应的编译属性。在Project Explorer视窗下,选择需要设置的工程文件,然后点击鼠标右键,选择 Properties项,在窗口中选择C/C++ Build -> Settings -> Tool Settings -> Sourcery G++ C++ Linker -> Libraries,如下图所示。其中的一个窗口用于指定库文件的名称,一个用于指定库文件的路径。
全部0条评论
快来发表一下你的评论吧 !