首页 > 行业资讯 > 正文

1.tslib库简介

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

2 相关工具安装

  安装必要工具libtool、automake、autoconf

$ sudo apt-get install libtool $ sudo apt-get install automake $ sudo apt-get install autoconf

3 tslib安装步骤

系统环境

开发环境:

Ubuntu18.04

目标开发板:

Tiny4412

交叉编译器:

arm-linux-gcc

Linux内核: Linux3.5

  1.下载tslib库源码包,将源码解压到用户目录下。

tslib源码下载地址:https://github.com/libts/tslib/releases

[wbyq@wbyq soft_work]$ tar xvf /mnt/hgfs/ubuntu/soft_pack/tslib-master.tar.gz #解压 [wbyq@wbyq soft_work]$cd tslib-master/tslib-master/ #进入到源码目录下 [wbyq@wbyq tslib-master]$ ls tslib库编译与移植-编译选项ftrapv

  2.configure配置,生成Makefile文件。

[wbyq@wbyq tslib-master]$ ./autogen.sh [wbyq@wbyq tslib-master]$ ./configure –host=arm-linux ac_cv_func_malloc_0_nonnull=yes –cache-file=arm-linux.cache –prefix=$PWD/_install

– -host=arm-linux – – -指定编译器

– -prefix=$PWD/_install – – -指定安装目录

  3.编译安装。

[wbyq@wbyq tslib-master]$ make && make install

  编译安装好后会生成 _install 文件夹。

tslib库编译与移植-编译选项ftrapv1

  生成的文件信息:

[wbyq@wbyq tslib-master]$ cd _install/ [wbyq@wbyq _install]$ tree . ├── bin │ ├── ts_calibrate │ ├── ts_harvest │ ├── ts_print │ ├── ts_print_raw │ └── ts_test ├── etc │ └── ts.conf ├── include │ └── tslib.h └── lib ├── libts-1.0.so.0 -> libts-1.0.so.0.0.0 ├── libts-1.0.so.0.0.0 ├── libts.la ├── libts.so -> libts-1.0.so.0.0.0 ├── pkgconfig │ ├── tslib-1.0.pc │ └── tslib.pc └── ts ├── arctic2.la ├── arctic2.so ├── collie.la ├── collie.so ├── corgi.la ├── corgi.so ├── dejitter.la ├── dejitter.so ├── dmc.la ├── dmc.so ├── galax.la ├── galax.so ├── h3600.la ├── h3600.so ├── input.la ├── input.so ├── linear_h2200.la ├── linear_h2200.so ├── linear.la ├── linear.so ├── mk712.la ├── mk712.so ├── pthres.la ├── pthres.so ├── tatung.la ├── tatung.so ├── touchkit.la ├── touchkit.so ├── ucb1x00.la ├── ucb1x00.so ├── variance.la └── variance.so 6 directories, 45 files

 4.拷贝bin目录下的文件到开发板/bin目录下。

[wbyq@wbyq _install]$ cp bin/* /home/wbyq/soft_work/rootfs/bin/

 5.拷贝lib目录下的.so文件到开发板的/lib目录下。

[wbyq@wbyq _install]$ cp lib/*.so* /home/wbyq/soft_work/rootfs/lib/ -rfdv [wbyq@wbyq _install]$ cp lib/ts/ /home/wbyq/soft_work/rootfs/lib/ -rfdv

  6.拷贝etc/ts.conf文件到开发板的/etc目录下。

[wbyq@wbyq _install]$ cp etc/ts.conf /home/wbyq/soft_work/rootfs/etc/

  7.修改配置文件。

  如果希望使用linux输入层事件接口,需要取消module_raw input 注释。 [wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/ts.conf tslib库编译与移植-编译选项ftrapv2

  8.配置开发板的的启动文件 profile。

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/profile tslib库编译与移植-编译选项ftrapv3export set TSLIB_TSDEVICE=/dev/input/event2 #设置触摸屏设备节点 export set TSLIB_CONFFILE=/etc/ts.conf #配置文件环境变量 export set TSLIB_PLUGINDIR=/lib/ts #指定tslib插件目录 export set TSLIB_CALIBFILE=/etc/pointercal #指定校准之后,信息保存的位置(会自动生成) export set TSLIB_CONSOLEDEVICE=none #指定控制台设备文件名字,默认没有。填none export set TSLIB_FBDEVICE=/dev/fb0 #屏幕设备节点

注意: 设置完环境变量之后,需要重启开发板生效,或者使用 source 命令立即生效。

4 开发板运行效果

  安装触摸屏驱动,检查触摸屏设备节点是否为上面设置的event2,运行ts_test。

[root@wbyq code]# insmod ft5x06_dev.ko [ 759.390000] IIC子系统:设备层注册成功 [root@wbyq code]# insmod ft5x06_drv.ko [ 762.175000] IIC子系统:驱动层注册成功 [ 762.175000] 资源匹配成功 [ 762.175000] input: Unspecified device as /devices/virtual/input/input3 [root@wbyq code]# ts_test 874.277420: 388 354 1 874.322712: 384 352 1 874.337917: 369 348 1 874.353162: 355 346 1 874.368397: 332 343 1 874.383524: 304 339 1 874.398664: 277 337 1 874.413889: 258 336 1 874.429156: 243 335 1 874.444247: 234 334 1 874.474649: 230 333 1 874.489914: 236 330 1 874.504974: 248 328 1 tslib库编译与移植-编译选项ftrapv4tslib库编译与移植-编译选项ftrapv5

  tslib中提供的测试命令,是通过ts.config文件读取相应的触摸屏配置信息和LCD屏配置信息。

5 调用tslib库获取触摸屏坐标

#include #include #include #include #include #include #include #include “tslib.h” int main(int argc,char *argv[]) { struct tsdev *ts; char *tsdevice=NULL; /*打开触摸屏设备节点*/ if( (tsdevice = getenv(“TSLIB_TSDEVICE”)) != NULL ) { ts = ts_open(tsdevice,0); } else { ts = ts_open(“/dev/input/event2”,0); } if(ts==NULL) { perror(“ts_open”); exit(1); } if (ts_config(ts)) { perror(“ts_config”); exit(1); } struct ts_sample samp; int ret; printf(” 时间 t X坐标 t Y坐标t压力值 n”); while (1) { ret = ts_read(ts, &samp, 1); if (ret < 0) { perror(“ts_read”); exit(1); } if (ret != 1) continue; printf(“[%ld.%06ld] %6d %6d %6dn”, samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure); } return 0; }

程序编译:

cflags=-I/home/wbyq/soft_work/tslib-master/tslib-master/_install/include #指定头文件 cflags+=-L/home/wbyq/soft_work/tslib-master/tslib-master/_install/lib #指定库文件路径 cflags+=-lts #指定库 app: arm-linux-gcc app.c -o app $(cflags)

运行效果:

[root@wbyq code]# ./app 时间 X坐标 Y坐标 压力值 [4591.061816] 337 369 1 [4591.124190] 337 369 0 [4592.426659] 512 399 1 [4592.502302] 507 400 1 [4592.517474] 503 401 1 [4592.532512] 500 403 1 [4592.547776] 494 405 1 [4592.562922] 489 408 1 [4592.578111] 483 410 1 [4592.593260] 479 412 1 [4592.624739] 475 415 1 [4592.655903] 472 417 0 [4592.972564] 442 402 1 [4593.063510] 445 402 1 [4593.078637] 449 402 1 [4593.093764] 452 403 1 [4593.109025] 459 404 1 [4593.124148] 465 404 1 tslib库编译与移植-编译选项ftrapv6

猜你喜欢