转自:http://www.latelee.org/embedded-linux/porting-linux-tslib.html

前段时间让Tslib搞晕头了,原来一切都是版本惹的祸。本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真。正如我所欣赏的“乘兴而来,兴尽而返”一样。——估计当年王子猷是赏完了夜景,兴致也完了,就回家了。

闲话少提。

搞tslib时,出现了许多错误,像

No raw modules loaded.
ts_config: Success

selected device is not a touchscreen I understand

ts_read: Invalid argument

等等错误,在网上找了很多资料,可惜都没有适合我的。

现在用的tslib是使用git下载的。注意,最好使用Linux平台下载,因为tslib中包括了脚本文件(如autogen.sh),而Windows与Linux处理一行的结束字符是不相同的,因此请在Linux中下载,当然,使用编辑器转换结束字符也无所谓。

命令如下:

$ git clone https://github.com/kergoth/tslib

在Linux下安装git可参考:Linux移植随笔:git的使用

编译过程如下:

$ ./autogen.sh

$ ./configure –host=arm-linux –prefix=/home/latelee/lib/tslib

$ make

$ make install

网上流行的编译方法如下:

$ ./autogen.sh

$ echo “ac_cv_func_malloc_0_nonnull=yes”> tmp.cache

$ ./configure –host=arm-linux –cache-file=tmp.cache –enable-inputapi=no –prefix=/home/latelee/lib/tslib

$ make

$ make install

有两点不同:

一,没有“ac_cv_func_malloc_0_nonnull=yes”,编译过程没有报错;

二,去掉“–enable-inputapi=no”,网上说法不在此处提及,单看README文件的描述:

TSLIB_TSDEVICE   TS device file name.

Default (non inputapi): /dev/touchscreen/ucb1x00

Default (inputapi): /dev/input/event0

板子的触摸屏设备文件正是/dev/input/event0(默认值,可以在配置文件ts.conf中设置这个环境变量)。

make install后,会在/home/latelee/lib/tslib目录生成4个子目录:

include lib etc bin

生成的库位于lib中,该目录下还有一个子目录ts,它包含了许多校准用到的库(如input.so等)。etc下的ts.conf为配置文件,bin目录下为校准、测试工具(如校准的ts_calibrate,测试用的ts_test)。

配置文件如下:

# Late Lee -- for touchscreen test

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

(该文件的日期为上个月最后一天,离今已十余天,为了这个花费的时日可不少。)

使用TSLIB_ROOT这个变量比较好,因为只要将编译生成后的tslib文件夹复制到某个位置,再修改这个变量即可,其它的不用修改。

配置文件ts.conf内容如下:

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/input/event0),其它的删除掉。后面的几个module还没有深入了解,它们使用的库就在tslib/lib/ts中,最后三个模块的字面意思是“方差(滤波)”、“去抖动(去噪)”、“线性(坐标变换)”,对这些东西不了解,不发表意见。

运行校准程序,触摸屏依次出现5个点,依次点击之:

# ./ts_calibrate

xres = 240, yres = 320

Took 14 samples…

Top left : X =  276 Y =  795

Took 12 samples…

Top right : X =  736 Y =  796

Took 11 samples…

Bot right : X =  735 Y =  248

Took 7 samples…

Bot left : X =  274 Y =  247

Took 7 samples…

Center : X =  505 Y =  524

-33.156189 0.304019 -0.000832

369.119629 0.000871 -0.401456

Calibration constants: -2172924 19924 -54 24190624 57 -26309 65536

生成的校准文件名为pointercal,位于/etc目录下。

如果想运行ts的测试程序,在tslib/bin目录下输入

./ts_test

即可。

屏幕最上方会出现三个按钮,分别为“Drag”、“Draw”和“Quit”,默认是第一个,因此,用触摸笔点击任何一处,十字光标便会到那里。

下面是点击“Draw”按钮并用触摸笔写字的提示信息的一小部分:

1302603922.770286:     98    302      1

1302603922.800295:    107    300      1

1302603922.815277:    118    297      1

1302603922.830291:    130    294      1

1302603922.845288:    143    290      1

1302603922.845288:    151    288      1

1302603922.875166:    168    284      0

第一列为timeval结构体的两个成员:tv_sec和tv_usec,中间两列分别是X和Y的坐标,最后为pressure,这里可以理解成“触摸事件”,为1表示触摸笔点击了(接触)屏幕,为0表示触摸笔离开了屏幕(这里出现很多的1是正常的,因为写字过程中笔没有离开触摸屏——这是废话,请无视之)。

点击屏幕上“Quit”或按Ctrl+C可退出该程序。

文中前面安装Tslib的路径是主机(又称开发主机、服务器、host)上的,后面与Tslib环境变量有关的是开发板(又称目标板、板子、target)上的。

最后附图一张,也算有图有真相了:

本文固定链接: http://www.latelee.org/embedded-linux/porting-linux-tslib.html

Linux移植随笔:终于解决Tslib的问题了【转】的更多相关文章

  1. Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】

    转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...

  2. 终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误

    终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误 http://blog.csdn.net ...

  3. linux移植问题汇总(一)

    linux移植问题汇总(一) 在此记录移植linux过程中出现的问题以及解决方法. 项目GitHub地址 linux3.0.80:https://github.com/numbqq/linux-3.0 ...

  4. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

  5. linux 百度ping不通解决

    很长时间没有使用Liunx了,上来发现linux上面没有办法ping百度了.(这样的问题>>..ping:www.baidu.com:Temporaryfailureinnameresol ...

  6. 被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Docker & Kubernetes相关文章:容器技术 基于各种原因,团队的Kubernetes被加了限制,必须在 ...

  7. ZYNQ Linux 移植:包含petalinux移植和手动移植debian9

    参考: https://electronut.in/workflow-for-using-linux-on-xilinx-zynq/ https://blog.csdn.net/m0_37545528 ...

  8. Linux移植实际操作一

    @ 目录 *前言 目前看了很多关于"Linux移植"的的各种教程.书籍,看完发现不过是对已有板子.已有驱动进行启用.禁用.参数修改.只能叫做"Linux配置". ...

  9. PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug

    PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...

随机推荐

  1. 【刷题】洛谷 P3834 【模板】可持久化线段树 1(主席树)

    题目背景 这是个非常经典的主席树入门题--静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输 ...

  2. nginx之编译安装

    一.认识nginx 常用的web服务有Apache.IIS(windows系统).Lighttpd.Tomcat.Nginx等.Nginx是一个开源的,支持高性能.高并发的www服务和代理服务软件.它 ...

  3. 利用signapk.jar工具对apk文件进行签名

    signapk.jar是Android源码包中的一个签名工具. 代码位于:Android源码目录下,signapk.jar 可以编译build/tools/signapk/ 得到. 使用signapk ...

  4. boost::asio::io_service类

    大部分使用Boost.Asio编写的代码都会使用几个io_service的实例.io_service是这个库里面最重要的类:它负责和操作系统打交道,等待所有异步操作的结束,然后为每一个异步操作调用其完 ...

  5. 关于nodejs的几个干货(读中文文件编码问题/发送邮件/定时任务)

    关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了. 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后 ...

  6. MongoDB 安装及开启关闭

    开启关闭的方式: 命令行 输入 net start mongodb 就打开mongo的服务了 输入 net stop mongodb 关闭服务 验证是否成功的方式: 在浏览器中输入 http://lo ...

  7. python 中的 %s,%r,__str__,__repr__

    1.%s,%r的区别 在进行格式化输出时,%r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别. %s ⇒ str(),比较智能: %r ⇒ repr(),处理较 ...

  8. 基于索引的MySQL优化

    今天查看MySQL慢查询日志,查看一个四表关联的SQL操作,耗时1006s.这次也是基于基于子查询的思路,对上表进行优化.使时间复杂度降到n^2级别.但优化之后时间反而是原来的三倍多. 原SQL语句: ...

  9. 支持iis高并发

    支持高并发的IIS Web服务器常用设置   适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows ...

  10. Golang入门教程(一)GOPATH与工作空间(Windows)

    https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.2.md Windows 环境: 下面我就 ...