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
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 文件夹。
生成的文件信息:
[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
8.配置开发板的的启动文件 profile。
[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/profile
export 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中提供的测试命令,是通过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
-
嵌入式
+关注
关注
5082文章
19118浏览量
305010 -
触摸屏
+关注
关注
42文章
2304浏览量
116171 -
移植
+关注
关注
1文章
379浏览量
28128 -
编译器
+关注
关注
1文章
1634浏览量
49124 -
编译
+关注
关注
0文章
657浏览量
32868
发布评论请先 登录
相关推荐
评论