歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> tslib1.0移植

tslib1.0移植

日期:2017/3/1 11:15:34   编辑:Linux編程

移植QT需要tslib 觸摸屏校正程序的支持,下面我們進行tslib1.0版本的編譯、移植講解

下載在Linux公社的1號FTP服務器裡,下載地址:

FTP地址:ftp://www.linuxidc.com

用戶名:www.linuxidc.com

密碼:www.muu.cc

在 2011年LinuxIDC.com\10月\tslib1.0移植

下載方法見 http://www.linuxidc.net/thread-1187-1-1.html

#tar zxvf tslib-1.0.tar.bz2

1、生成.configure文件

./autogen.sh

2、指定交叉編譯器及配置腳本

#CC=arm-linux-gcc //選擇交叉編譯器

#./configure--host=arm-linux --prefix=$PWD/../tslib1.0_target --enable-inputapi=no

//在當前路徑的前一級目錄建立目標文件夾

#exportPLUGIN_DIR=$PWD/plugins

3.編譯

在tslib-1.0\config.h中有一行定義“#define malloc rpl_malloc”,直接注釋

#make

#make install

則會在與當前目錄平級的文件夾下建立tslib_target文件夾,裡面包含bin/ etc/ include/ lib/ 等幾個文件夾

3、移植到開發板上

1)在開發板的usr/目錄下建立文件夾tslib,將上述四個文件夾拷貝到tslib目錄下

#cd /usr/

#mkdir /usr/tslib

#cp tslib_target/* /usr/tslib -r

2)修改/usr/tslib/etc/ts.conf將第一句話的屏蔽去掉

#module_raw input

改為

module_raw input (注意前面不要有空格)

3)修改開發板 /etc目錄下/profile 文件,添加以下啟動腳本並運行

#vi /etc/profile

export T_ROOT=/usr/tslib #目錄

exportPATH=$PATH:$T_ROOT/bin #可執行程序目錄加入環境變量

exportLD_LIBRARY_PATH=/lib:/lib:/usr/lib:$T_ROOT/lib #庫文件目錄

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0 #framebuffer設備文件

export TSLIB_TSDEVICE=/dev/event0 #觸摸屏設備文件

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

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf #tslib模塊配置文件

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts/ #tslib插件庫目錄

echo "ts init success!"

4、使用與測試

1)ts_calibrate

執行後,屏幕上出現5個點,依次點擊進行校准,校准完畢後,在/etc下會產生pointercal文件,供其它程序使用,ts_calibrate是一個應用程序,在屏幕上畫幾個按鈕,將用戶點擊後從ts驅動獲得的數據和屏上的坐標位置通過一套算法來獲得校准數據寫到一個校准文件裡

2)ts_print 將屏幕坐標打印出來

橫坐標 縱坐標

1796351007.320859: 156 116 500 按下

1796351007.355145: 156 116 0 抬起

3)ts_print_raw 將屏幕坐標的原始數據打印出來

1796350964.530867: 216 865 1 按下

1796350989.946831: 0 0 0 抬起

4)ts_test檢測一下校正結果,如果touch的時候,十字光標隨著手指移動


5、常見錯誤的解答

1)

在make的過程提示以下錯誤解決:

libtool:link: only absolute run-paths areallowed

忘記指定環境變量:exportPLUGIN_DIR=$PWD/plugins

2)

ts_config: Success

追查後應該是在打開ts_config中出現了錯誤

tslib插件庫目錄 沒有指定對

exportTSLIB_PLUGINDIR=$T_ROOT/share/ts/plugins/ #tslib插件庫目錄

3)

ts_open:Inappropriate ioctol for device

自己板子的觸摸屏驅動不支持ioctl操作

.configure 時加上 --enable-inputapi=no 參數

4)
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannotopen shared object file: Error 40
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannotope
n shared object file: No such file or directory

解決辦法:
#echo $LD_LIBRARY_PATH //查看lib路徑,
#export LD_LIBRARY_PATH=$T_ROOT/lib

5)
ts_open: No such file or directory
解決辦法:
#export TSLIB_TSDEVICE=/dev/input/event0 //觸摸屏設備路徑

6)
Couldnt open tslib config file: No such file or directory ts_config: Illegalseek
解決辦法:
#export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

7)
Couldnt load module pthres
No raw modules loaded.
ts_config: Success
解決辦法:
#export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

8)
No raw modules loaded.
Ts_config: No such file or directory
解決辦法:
修改$T_ROOT/etc/ts.conf, 至少放開一個module_raw,並去掉前面空格

Copyright © Linux教程網 All Rights Reserved