英创信息技术EM9280 Linux触摸屏应用开发简介

描述

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这个两个文件中。

Linux

该工程文件中用到专用的动态库libts.so,在eclipse环境对此程序编译时,需要设置相应的编译属性。在Project Explorer视窗下,选择需要设置的工程文件,然后点击鼠标右键,选择 Properties项,在窗口中选择C/C++ Build -> Settings -> Tool Settings -> Sourcery G++ C++ Linker -> Libraries,如下图所示。其中的一个窗口用于指定库文件的名称,一个用于指定库文件的路径。

Linux

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分