移植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,並去掉前面空格