触摸屏校正总结(2)
1) 环境变量
为了实现Tslib 的正确运行,需要对如下的Tslib 的环境变量进行配置: 2) TSLIB_TSDEVICE //触摸屏设备文件名
Default (no inputapi): /dev/touchscreen/ucb1x00 Default (inputapi): /dev/input/event0
TSLIB_CALIBFILE //校准的数据文件,由ts_calibrate 校准程序生成 Default: ${sysconfdir}/pointercal TSLIB_CONFFILE //配置文件名 Default: ${sysconfdir}/ts.conf TSLIB_PLUGINDIR //插件目录 Default: ${datadir}/plugins
TSLIB_CONSOLEDEVICE //控制台设备文件名 Default: /dev/tty
TSLIB_FBDEVICE //FrameBuffer设备名 Default: /dev/fb0 3) 以上环境变量在实际开发中的实际配置可以根据实际情况决定。 4) 2)配置文件
除了环境变量以外,Tslib 的配置文件ts.conf 同样是个十分重要的部分,在ts.conf 中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。 下面是Tslib 1.4 中的ts.conf 的参考配置: 5) # Uncomment if you wish to use the linux input layer event
interface
# module_raw input
# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d # module_raw collie
# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860 # module_raw corgi
# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00
# Uncomment if you're using an HP iPaq h3600 or similar # module_raw h3600
# Uncomment if you're using a Hitachi Webpad # module_raw mk712
# Uncomment if you're using an IBM Arctic II # module_raw arctic2
module pthres pmin=1
module variance delta=30 module dejitter delta=100 module linear
6) 其中 pthres 为Tslib提供的触摸屏灵敏度门槛插件;variance 为
Tslib提供的触摸屏滤波算法插件;dejitter 为Tslib提供的触摸屏去噪算法插件;linear 为Tslib 提供的触摸屏坐标变换插件。 7) tslib 的实际配置:
8) 去掉module_raw input前面的#号,同时把其他#号注释项全部删
除,以免给后来的操作带来麻烦。我的最终ts.conf 内容为: module_raw input
module pthres pmin=1
module variance delta=30 module dejitter delta=100 module linear
在执行校正程序时(如./ts_calibrate或./ts_test)可能出现的错误:
1:运行./ts_test No raw modules loaded.
ts_config: No such file or directory
出现这样的错误提示,可以很明确的告诉你,你的库缺少了一些*.so文件()
ts.conf文件中应该有一行(在配置文件上有很多的raw,但是全部是被注释掉的,但是至少需要打开一个。因为触摸屏是使用input子系统的,所以将module_raw input前面的#号去掉,并且前面不留空格,千万别留空格啊,有一个网友就是因为这个小小的空格搞到他郁闷了很久,幸好我比他醒目,绝不留空格,哈哈。。。。) module_raw input
/nand1/tslib-1.4/lib/ts目录下应该有个文件叫
input.so(这个文件比较重要,我第二次移植过程中不小心把input裁剪掉了,当插件库$TSLIB_ROOT/lib/ts目录下没有这个文件时会提示如下错误) No raw modules loaded.
ts_config: No such file or directory
2:在做测试的时候,运行./ts_calibrate出现了tslib-1.4经典的错误:(出现这个错误你不要沮丧,反而应该高兴,说明你之前的步骤已经全部没错了,只要把这个经典的错误解决就万事大吉了。很庆幸,这个错误有很多网友都已经有办法解决了) 经典错误:
Couldnt load module input No raw modules loaded tsconfig: Success
错误分析:那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错。 阅读了tslib 的源代码,知道了cstdlib 库里的一个函数: getenv
是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。 其环境变量默认的值在readme中有注明。
加载插件模块时出出错分析:
ts_calibrate会打开ts_config
ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),
然后根据这个文件逐个加载插件库,1.4版本的ts.conf内容为: Module_raw input (读readme文件可以找到这个字符串) module pthres pmin=1 module variance delta=30 module dejtter delta=100 module linear
ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,
然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库! Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen 错误就应该出在构造的库文件名是错误的---其指定的文件不存在
---从而导致 dlopen无法加载。所以才提示找不到文件或目录!
那么这样就是应该把需要的input.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中(上面修正后作了这一步,就可以拉,就不会出现错误拉)
3: [~#]./ts_calibrate.sh
此时会加载tslib中的插件模块input.so,且会抛出Segement fault的错误。仔细分析tslib的源码之后,得知在加载
input.so时,ts_attach.c中__ts_attach_raw()函数中使用NULL指针,导致Segement fault产生。经过修改过,重新
编译tslib,再运行ts_calibrate.sh,一切正常。ts_attach.c中__ts_attach_raw()中的修改如下:
#if 0
for(next = ts->list, prev=next; next != NULL && next != prev_list; next = prev->next, prev = next) {
DEBUG(\prev->next=%x\\n\
__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next); ; } #else
for(next = ts->list, prev=next; next != NULL && next != prev_list;) {
DEBUG(\prev->next=%x\\n\
__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next); next = prev->next; if(next == NULL) break; else
prev = next;
}
#endif
至此,tslib所有工作已经完成,ts_calibrate会在~/ts-release/etc/目录下生成pointercal文件。pointercal为触摸屏校准后生成的文件,确保QT运行时,触摸屏工作正常。
…… 此处隐藏:2058字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




