IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux应用编程-tslib库 -> 正文阅读

[系统运维]linux应用编程-tslib库

目录

1、简介

2、源码编译

2.1、下载源码

2.2、配置工程

2.3、编译工程

2.4、安装

3、编译生成文件

3.1、ts.conf

4、移植

4.1、拷贝文件

4.2、配置环境变量

4.3、设置LD_LIBRARY_PATH

5、tslib库函数

5.1、ts_open()函数

5.2、ts_setup()函数

5.3、ts_close()函数

5.4、ts_config()函数

5.5、ts_read()函数

5.6、ts_read_mt()函数

5.7、ts_sample结构体

5.8、ts_sample_mt结构体


1、简介

tslib是触摸屏驱动和应用层之间的适配层, 它把应用程序中读取触摸屏input_event结构体类型数据并进行解析的操作过程进行了封装,向使用者提供了封装好的 API 接口。 tslib从触摸屏中获得原始的坐标数据, 并通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的触摸屏坐标转换为相应的屏幕坐标。
注:tslib库是 Linux 系统下, 专门为触摸屏开发的应用层函数库。

注:tslib 可以作为 Qt 的触摸屏输入插件,为 Qt 提供触摸输入支持。

2、源码编译

2.1、下载源码

https://github.com/libts/tslib/releases

2.2、配置工程

1)指定指定交叉编译工具链

????????--host 选项用于指定交叉编译工具链,通常将--host 设置为交叉编译器名称的前缀,譬如 arm-linux-gnueabi-gcc 前缀就是 arm-linux-gnueabi;

2)指定install路径

?????????--prefix 选项则用于指定库文件的安装路径。

例如 ./configure --host=arm-linux-gnueabi --prefix=路径

2.3、编译工程

使用make命令编译工程

2.4、安装

使用make install命令进行安装。

3、编译生成文件

目录说明
binbin 目录下有一些 tslib 提供的小工具,可以用于测试触摸屏
etc有一个配置文件 ts.conf
include有一个头文件 tslib.h,该头文件中包含了一些结构体数据结构以及 API 接口的申明
lib

编译 tslib 源码所得到的库文件。ts 目录下存放的是一些插件库。

注:默认都是动态库文件,也可以通过配置 tslib 工程使其生成静态库文件。

3.1、ts.conf

tslib 有一个配置文件 ts.conf, 该配置文件中提供了一些配置参数、用户可以对其进行修改!

选项说明
module_raw input

取消注释,使能支持 input 输入事件

module pthres pmin用于调节按压力灵敏度。如果设备支持按压力大小测试,那么可以取消注释, pmin 用于调节按压力灵敏度,默认就是等于 1。
module dejitter delta

过滤噪声样本。tslib 提供了触摸屏去噪算法插件,如果需要过滤噪声样本, 取消注释,默认参数 delta=100。

module linear坐标变换。tslib 提供了触摸屏坐标变换的功能,譬如将 X、 Y 坐标互换、坐标旋转等之类,如果需要实现坐标变换,可以把注释去掉。

4、移植

4.1、拷贝文件

1)bin/目录下的所有可执行文件;

2)etc/目录下的配置文件 ts.conf;

3)lib/目录下的所有库文件;

4.2、配置环境变量

变量说明
TSLIB_CONSOLEDEVICE

用于配置控制台设备文件名

一般设置为none

TSLIB_FBDEVICE用于配置显示设备的设备节点
TSLIB_TSDEVICE用于配置触摸屏对应的设备节点
TSLIB_CONFFILE用于配置 ts.conf 文件的所在路径。
TSLIB_PLUGINDIR用于配置插件所在路径。
TSLIB_CALIBFILE指定触摸屏校准文件pointercal的存放位置

4.3、设置LD_LIBRARY_PATH

export LD_LIBRARY_PATH="运行库路径"

5、tslib库函数

5.1、ts_open()函数

打开触摸屏设备。

#include "tslib.h"

struct tsdev *ts_open(const char *dev_name, int nonblock);

参数 dev_name:指定了触摸屏的设备节点;

参数 nonblock:表示是否以非阻塞方式打开触摸屏设备,如果nonblock 等于 0 表示阻塞方式,如果为非 0 值则表示以非阻塞方式打开。
返回值:调用成功返回一个 struct tsdev *指针, 指向触摸屏设备句柄;如果打开设备失败,将返回 NULL。

5.2、ts_setup()函数

ts_setup()相比 ts_open(),除了打开触摸屏设备外,还对触摸屏设备进行了配置。

#include "tslib.h"

struct tsdev *ts_setup(const char *dev_name, int nonblock)

参数 dev_name:指定了触摸屏的设备节点;当 dev_name 设置为 NULL 时, ts_setup()函数内部会读取TSLIB_TSDEVICE 环境变量, 获取该环境变量的内容以得知触摸屏的设备节点。
参数 nonblock:表示是否以非阻塞方式打开触摸屏设备。

返回值:调用成功返回一个 struct tsdev *指针, 指向触摸屏设备句柄;如果打开设备失败,将返回 NULL。

5.3、ts_close()函数

关闭触摸屏设备。

#include "tslib.h"

int ts_close(struct tsdev *);

5.4、ts_config()函数

配置触摸屏设备。

注:所谓配置其实指的就是解析 ts.conf 文件中的配置信息,加载相应的插件。

#include "tslib.h"

int ts_config(struct tsdev *ts);

参数 ts:?指向触摸屏句柄。
返回值:成功返回 0,失败返回-1。

5.5、ts_read()函数

读取单点触摸数据。

#include "tslib.h"

int ts_read(struct tsdev *ts, struct ts_sample *samp, int nr);

参数 ts :指向一个触摸屏设备句柄。

参数samp:指向一个 struct ts_sample 对象。

参数 nr :表示对一个触摸点的采样数。

5.6、ts_read_mt()函数

用于读取多点触摸数据。

#include "tslib.h"

int ts_read_mt(struct tsdev *ts, struct ts_sample_mt **samp, int max_slots, int nr);

参数 ts :指向一个触摸屏设备句柄。

参数samp:指向一个struct ts_sample_mt *对象。

参数max_slots :表示触摸屏支持的最大触摸点数(可以通过调用 ioctl()函数获取到)。

参数 nr :表示对一个触摸点的采样数。

5.7、ts_sample结构体

struct ts_sample 数据结构描述了触摸点的信息。

struct ts_sample {
    int x; //X 坐标
    int y; //Y 坐标
    unsigned int pressure; //按压力大小
    struct timeval tv; //时间
};

5.8、ts_sample_mt结构体

多点触摸的每一个触摸点的信息使用 struct ts_sample_mt 数据结构来描述;

struct ts_sample_mt {
    /* ABS_MT_* event codes. linux/include/uapi/linux/input-event-codes.h
    * has the definitions.
    */
    int x; //X 坐标
    int y; //Y 坐标
    unsigned int pressure; //按压力大小
    int slot; //触摸点 slot
    int tracking_id; //ID
    int tool_type;
    int tool_x;
    int tool_y;
    unsigned int touch_major;
    unsigned int width_major;
    unsigned int touch_minor;
    unsigned int width_minor;
    int orientation;
    int distance;
    int blob_id;
    struct timeval tv; //时间
    /* BTN_TOUCH state */
    short pen_down; //BTN_TOUCH 的状态
    /* valid is set != 0 if this sample
    * contains new data; see below for the
    * bits that get set.
    * valid is set to 0 otherwise
    */
    short valid; //此次样本是否有效标志 触摸点数据是否发生更新
};

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:59:27  更:2022-03-24 01:01:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:47:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码