tslib库编译与移植

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.so6 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 #指定控制台设备文件名字,默认没有。填noneexport 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 1874.322712: 384 352 1874.337917: 369 348 1874.353162: 355 346 1874.368397: 332 343 1874.383524: 304 339 1874.398664: 277 337 1874.413889: 258 336 1874.429156: 243 335 1874.444247: 234 334 1874.474649: 230 333 1874.489914: 236 330 1874.504974: 248 328 1  
  tslib中提供的测试命令,是通过ts.config文件读取相应的触摸屏配置信息和lcd屏配置信息。
5 调用tslib库获取触摸屏坐标
#include #include #include #include #include #include #include #include tslib.hint 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  

万用表测电容没反应怎么回事
消费类音视频SoC系统ATE测试要求
华为正式启动了一口价换电池服务
485和MCU通信通信异常故障分析
小派科技着手建设生态,2022GDC荣耀回归
tslib库编译与移植
优傲机器人简单操作及PolyScope软件系统介绍
三星Galaxy S8行货开卖时间曝光:5月10日
校园出入口场景中安装人脸识别门禁一体机的优势/作用/特点
小米是否会在4月1日发布VR一体机的迭代产品?
物联网产业的国际新标准
dfrobotI2C LCD1602 液晶显示屏简介
DS18S20-PAR 寄生供电数字温度计
TDK小型低输出无线供电系统的特点
通用型高压带关断功能的单通道运算放大器——AXOP36061S
单片机I/O的常用驱动和隔离电路的设计方法
实用|室外光缆怎么接详细步骤来啦
嵌入式C语言的指针、函数概念、结构体递归三大挑战
PIC单片机显示程序分享
防水插头连接器使用需要事项