作为基本输入设备,触摸板几乎是交互式嵌入式系统的标配。当我们知道了可以通过设备节点读取触摸板数据后,我们需要进一步优化这些直接获取的原生数据,比如去抖、消噪、校准等。


优化触摸板的 raw (原生)数据是一项十分复杂的算法任务,涉及诸如矩阵运算、行列式等高等数学,一般需要有比较扎实的数学背景的算法工程师来做,他们的其中一项杰出成果,便是今天要介绍的 tslib 库了。

没有 使用 tslib 库之前,操作触摸板设备的代码样子是这样的:(丑翻天!!)

经过 tslib 库整容之后,操作触摸板的代码是这样子的:(美轩完!!)

可以看到,使用了 tslib 库之后不仅得到了各种牛逼算法的保驾护航,而且代码更加简练,逻辑更加清晰,整个人瞬间变美变帅有没有!

因此,投资点时间来搞 tslib 库是值得的,下面以粤嵌的嵌入式课程环境为例(含粤嵌的GEC210开发板),具体操作步骤如下:

1,上网搞个源码库,如果你可爱到不会用百度,没关系,戳我下载(http://download.csdn.net/detail/vincent040/9662825)。

2,将源代码丢到Ubuntu,并通过以下命令解压到Ubuntu的家目录下:

tar  xjvf  tslib-1.4.tar.bz2  -C  ~

3,进入源码顶层目录,依次执行如下命令:

mkdir  ~/tslib

./configure  --prefix=/home/xxx/tslib  --host=arm-none-linux-gnueabi

make

make install

当然,我以我多年栽坑经验告诉你,以上指令哪些地方需要注意,以便节约你宝贵的生命,没错请叫我雷锋,林雷锋。

A) --prefix= 后面的路径就是你要安装 tslib 库的路径,墙裂建议设置为家目录下的空目录(比如~/tslib),因为如果设置系统其它目录的话,后期 make install 的时候会让你解决权限的问题,当你自作聪明地使用sudo的时候,系统却又可能会抱怨找不到工具链,因此除非你是 Ubuntu科学家,对系统环境变量了如指掌,否则不要用小白的身份去作死,乖乖将 --prefix 指定为 ~/tslib 即可。

B) --host= 后面就是你工具链的前缀,注意别眼花写错了。

C) make的时候,一般会出现如下错误:


这个问题怎么解决呢?莫方,我看你有缘,今日将祖传秘方传授与你(默默承认我这年龄不应有的智慧和大度):那就是,将源码顶层目录下的 config.h文件的第181行,删除!然后重新 make ,问题解决。

最后,你将会在 /home/xxx/tslib 下发现如下目录:

接下来,你需要想办法,将这一堆文件搞到开发板里面去,一般先将它们打包压缩,然后通过串口或者网络协议传输到开发板,然后在开发板中解压即可。

库都拷贝到了开发板,是不是就万事大吉了呢?非也,你辛辛苦苦干的这些活儿,开发板系统是无知无觉的,你还必须这么做:

1,将 tslib/etc/ts.config 中的第2行,由原来这个样子:


改成这个样子


没错,就是把第 2 行前面的井号 # 和空格删除,注意,我说井号和空格,我没说井号,好之为之。

2,在开发板系统的 /etc/profile 文件中,增加如下内容(假设你把 tslib 库放到了开发板的根目录下,如果不是,以下路径请进行相应的修改):

export TSLIB_ROOT=/tslib/lib

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONFFILE=/tslib/etc/ts.conf

export TSLIB_PLUGINDIR=/tslib/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_CALIBFILE=/tslib/calibration

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib

解释一下上面的环境变量:

TSLIB_ROOT 指明TSLIB库在开发板中的具体位置,要以实际情况为准。

TSLIB_TSDEVICE 指明开发板触摸屏的设备节点文件名称。

TSLIB_FBDEVICE 指明开发板LCD的设备节点文件名称。

TSLIB_CONFFILE 指明TSLIB库的配置文件的具体位置,要以实际情况为准。

TSLIB_PLUGINDIR 指明TSLIB库的插件模块的具体位置,要以实际情况为准。

TSLIB_CONSOLEDEVICE 指明终端名称,none意为让系统自动匹配。

TSLIB_CALIBFILE 指明校正文件的位置,该文件在执行ts_calibrate之后自动生成。

LD_LIBRARY_PATH 是开发板系统的动态库链接路径

3,最后的最后,重启开发板,让系统重新读取 /etc/profile 文件的内容,有必要的话执行以下 /tslib/bin/ts_calibrate 校准屏幕,大功告成(再再一次默默承认这个年纪不该有的智慧)!

转载于:https://blog.51cto.com/vincent040/1865256

触摸板库tslib的编译和配置相关推荐

  1. Linux下禁用T440s,X240的一体化触摸板(touchpad)

    自打1月买了Thinkpad T440s就一直很火大,其中最让人恼火的莫过于触摸板. Thinkpad的经典就包括用了小红点(TrackPoint).但是小红点只能定位,还是需要鼠标的左右键的.但是自 ...

  2. arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天在之前的文章基础上, ...

  3. 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天(200528)在之 ...

  4. Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 libcurl是什么? libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当 ...

  5. linux触摸板设置密码程序6,Linux下Synaptics笔记本触摸板的配置

    笔记本上Synaptics的触摸板比较常见,但关于其配置的资料目前来看比较混乱,主要原因是这两年来桌面环境的变化比较大,搜索出来的结果是不同时期的人的解决办法,往往五花八门让人无所适从,如果想完全控制 ...

  6. linux+synaptics+驱动程序,Linux下Synaptics笔记本触摸板的配置

    笔记本上Synaptics的触摸板比较常见,但关于其配置的资料目前来看比较混乱,主要原因是这两年来桌面环境的变化比较大,搜索出来的结果是不同时期的人的解决办法,往往五花八门让人无所适从,如果想完全控制 ...

  7. Archlinux: 优化触摸板配置

    更新于2017-02-04 年后更新系统发现 xSwipe 已不能正常使用, 原来早在 2017-01-14 社区已发布公告 说 xf86-input-libinput 将成为默认输入设备的驱动, 但 ...

  8. Linux下Synaptics笔记本触摸板的配置

    笔记本上Synaptics的触摸板比较常见,但关于其配置的资料目前来看比较混乱,主要原因是这两年来桌面环境的变化比较大,搜索出来的结果是不同时期的人的解决办法,往往五花八门让人无所适从,如果想完全控制 ...

  9. 国产麒麟系统笔记本怎么在没有快捷键、图形化配置不生效的情况下关闭触摸板

    触控板是借由电容感来获知手指移动的情况,如果没有鼠标,就会使用手指在触控板上滑动点击来控制指针.使用鼠标操作笔记本的时候,总是会碰到笔记本的触控板,影响用户的操作,因此有些用户就想关闭这个触控板.下面 ...

最新文章

  1. 空值排序(oracle/sqlserver)
  2. 如何在Pandas的DataFrame中的行上进行迭代?
  3. 虚拟主机6大骗术,站长朋友小心了
  4. element-ui table表格内容相同自动合并
  5. ios 权限提示语_iOS工作室都在用按键v1.6.1(体验版)
  6. ERROR: Cannot uninstall ‘PyYAML‘. 安装 fvcore
  7. 【Elasticsearch】es一个奇怪的问题 is_write_index fasle的时候还在写入 索引滚动无效
  8. 7.Linux性能诊断 --- 分布式追踪系统体系概要
  9. 服务器虚拟机解锁苹果,Unlocker(VMware虚拟机MacOS系统解锁工具)v3.0.2 免费版-ucbug软件站...
  10. 如何关闭135,139,445高危端口
  11. 程序员到CTO的Java技术路线图
  12. C++基于libxls库读取xls文件
  13. 前端页面调用微信扫一扫功能
  14. Java对数组对象进行排序
  15. 如何从0到1组建敏捷团队?
  16. 白侠机器人_白侠微信多群直播机器人,直播机器人首选
  17. addClass和removeClass的用法
  18. 怎么样才能学好数学?
  19. mescroll.js下拉刷新
  20. 传真服务器架设一点通

热门文章

  1. Collatz猜想 (Hailstone)(3n + 1猜想)
  2. 防火墙软件测试工资,防火墙的性能测试
  3. 鸿蒙系统sp3什么意思,怎么看电脑系统是哪个版本的?例如SP2 SP3?
  4. js reduce实现中间件_MapReduce 模型
  5. 稀疏数组与原始数组之间的转换
  6. Index of c#
  7. 1049.(*) Counting Ones
  8. ACM Doing Homework again
  9. 合并果子_tyvj1066_vijos1097_codevs1063_贪心+堆
  10. JS鼠标滚轮事件详解