博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux移植随笔:终于解决Tslib的问…
阅读量:4051 次
发布时间:2019-05-25

本文共 3148 字,大约阅读时间需要 10 分钟。

Linux移植随笔:终于解决Tslib的问题了

前段时间让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  
在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 2011-03-31 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)上的。
最后附图一张,也算有图有真相了:
(看不到图请到原文地址查看)
Linux移植随笔:终于解决Tslib的问题了
本文首发自: ,由迟思堂出品。
PS:本人少上论坛,回复及站内信不及时处理,见谅。

转载地址:http://fspci.baihongyu.com/

你可能感兴趣的文章
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql truncate (清除表数据)
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
yuv420 还原为RGB图像
查看>>