⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用tslib校准触摸屏(成功).rtf

📁 包含触摸屏驱动源码(for s3c2410)以及触摸屏驱动,USB键盘鼠标移植详细步骤,tslib触摸屏校准程序的移植使用,包括错误解决方法.
💻 RTF
📖 第 1 页 / 共 2 页
字号:

 

 

2.4 指定环境变量

export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0raw

 

export T_ROOT=/mnt/nfs/tslib

 

export LD_LIBRARY_PATH=$T_ROOT/lib  //指定tslib库文件路径

 

export TSLIB_CONSOLEDEVICE=none  //tslib运行需要的控制台,这里就是LCD屏幕 ,设定控制台设备为none,否则默认为/dev/tty, 

 

export TSLIB_FBDEVICE=/dev/fb0    //指定帧缓冲设备

 

export TSLIB_TSDEVICE=/dev/touchscreen/0raw         //指定触摸屏设备节点文件

 

export TSLIB_CALIBFILE=$T_ROOT/etc/pointercal     //指定触摸屏校准文件pintercal的存放位置

 

 

********************************************************************

注:qte的/src/kernel/qwsmouse_qws.cpp里面校准文件默认打开是在/etc下面为/etc/pointercal,

可是我得板子的根文件系统为只读,所以我放在/mnt/nfs/tslib/etc下面了,

所以在交叉编译qte的时候需要修改qwsmouse_qws.cpp

**************************************************

 

 

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf   //指定TSLIB配置文件的位置

 

export TSLIB_PLUGINDIR=$T_ROOT/plugins    //指定触摸屏插件所在路径

 

2.5 校准

运行校准程序校准屏幕(5点校准)

cd $T_ROOT/tests

 

./ts_calibrate   //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在$T_ROOT/etc/下面

 

********************************************

 

ts_calibrate是一个应用程序,在屏幕上画几个按钮,将用户点击后从ts驱动获得的数据和

屏上的坐标位置通过一套算法来获得校准数据写到一个校准文件里。 

******************************************

 

 

3. 可能遇到的错误分析:

在测试的时候,运行./ts_calibrate又出现了令人十分之郁闷的错误:

ts_config: Success

追查后应该是在打开ts_config中出现了错误(居然报Success,无欲至极)

在网上发现多是这个错误(这是1.4版本的错):

Couldnt load module input 

No raw modules loaded

tsconfig: Success

我没有上面那两行的错误,不过应该是一样的错误原因

 

 

那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错

查询了ts_load_module.c这个文件发现网上和自己的不太一样(网上公布的源码是1.4或者是0.1.1的吧)我的是1.3的

我下载了tslib-0.1.1的后重新实验 就发现错误的是这样子的(第一个错误是由ts.conf所决定的)

Couldnt load module pthres 

No raw modules loaded

tsconfig: Success

 

 

阅读了tslib 的原代码,知道了cstdlib 库里的一个函数: getenv 

是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。

其环境变量默认的值在readme中有注明。

 

 

加载插件模块时出出错分析:

ts_calibrate会打开ts_config

ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),

然后根据这个文件逐个加载插件库

 

1.3版本的ts.conf内容为

module mousebuts

moudle variance xlimit=50 ylimit=50 pthreshold=3

moudle dejitter xdelta=1 ydelta=1 pthreshold=3

moudle linear

 

 

ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,

然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!

 

Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen

错误就应该出在构造的库文件名是错误的---其指定的文件不存在

---从而导致 dlopen无法加载。所以才提示找不到文件或目录!

 

那么这样就是应该把需要的mousebuts.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中

(上面修正后作了这一步,就可以拉,就不会出现错误拉)

 

 

 

**************************************

 

这里来谈一谈tslib-1.4,和1.3有一点点不一样,主要是配置文件的差别

一般来说,tsllib-1.4种一个完整的ts.conf配置文件如下所示: 

module_raw input 

module pthres 

module variance delta=30 

module dejitter delta=100 

module linear 

 

 

出现这个错误

Couldnt load module input 

No raw modules loaded

tsconfig: Success

 

第一行告诉tslib从linux的输入设备读取数据,需要用到input这个模块,也就是plugin目录下的input.so文件,

所以你的TSLIB_PLUGINDIR一定要配置正确,让tslib能够找到模块文件。

其他参数分别控制触摸点的连续下压、变化宽度、轨迹变化和线性校准。 

也是要把其对应的需要的几个库文件复制到/tslib/plugins中

 

第二行导致"No raw modules loaded."的原因有两个:

注意:一是你的ts.conf中没有指定module_raw,自带的ts.conf的所有module_raw都被注释掉了,

# 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_raw选项,有人就选择了input,去掉了它的注释

得到module_raw input

 

另一个原因就是你没有正确配置TSLIB_PLUGINDIR,tslib从你指定的目录中没有找到plugin需要的模块文件,

请检查你的路径和文件。
________________________________________________
问题:
小弟最近搞触摸屏多时,一直不能解决。现在触摸屏有点反应,但还没校准,我想用tslib来校准,但碰到很多困难,望大侠指教,小弟万分感激!!! 
我用arm-linux-gcc编译了tslib,然后把make install生成的lib拷贝到nfs的lib中,接着在控制台运行: 
export TSLIB_TSDEVICE=/dev/input/ts0 
export TSLIB_CONSOLEDEVICE=/dev/tty 
export TSLIB_FBDEVICE=/dev/fb/0 
export TSLIB_CONFFILE=/etc/ts.conf 
设置好后运行: 
ts_test 
出现错误,是不是与TSLIB_CALIBFILE和TSLIB_PLUGINDIR两个没设置有关,请问TSLIB_CALIBFILE和TSLIB_PLUGINDIR应该如何设置? 
除把make install生成的lib库放到nfs的lib中外,还需要其它的吗? 
请大侠在百忙中抽点时间帮我解答下,特别是TSLIB_CALIBFILE和TSLIB_PLUGINDIR变量啊,小弟万分感激!!!
回复:
1、/dev/input/ts0 是什么设备?正常的应该是/dev/input/eventX,内核Event interface选择了么?
3、用TSLIB_PLUGINDIR指定到plugins文件存放的目录。 
4、TSLIB_CALIBFILE默认是/etc/pointercal,可以不指定。

./configure -host=arm-linux -enable-debug -prefix=/usr/local/arm/3.4.1/arm-linux
_______________________________________

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -