天天看點

Tslib校準過程

在采用觸摸屏的移動終端中,觸摸屏性能的調試是個重要問題之一,因為電磁噪聲的緣故,觸摸屏容易存在點選不準确、有抖動等問題。

Tslib是一個開源的程式,能夠為觸摸屏驅動獲得的采樣提供諸如濾波、去抖、校準等 功能,通常作為觸摸屏驅動的适配層,為上層的應用提供了一個統一的 接口。在Qtopia 4.*版本中,預設的Tslib版本為Tslib 1.4。在Qtopia 2.*版本中,預設的Tslib版本為Tslib 1.3。

Tslib的官方下載下傳位址為一個CVS伺服器,下載下傳方法為:

#export CVSROOT=:pserver:[email protected]:/mnt/src/cvsroot

#cvs login

#cvs co tslib

獲得Tslib的源代碼後,需要首先進行編譯,下面以Tslib 1.4為例介紹Tslib的編譯過程:

#cd ../tslib1.4

//指定交叉編譯工具

# export CC=/usr/local/ arm-linux-4.1.1 /bin/arm-linux-gcc

//生成config檔案

//autogen.sh

#export PATH=/usr/local/ arm-linux-4.1.1/bin:$PATH

//避免檢查ac_cv_func_malloc_0_nonnull

#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache

//配置目标機、緩沖、安裝路徑

#./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=/opt/tslib1.4

# make

# make install

這樣就可以在/opt/tslib1.4目錄下看到相關的應用程式、共享庫、配置檔案等了,需要說明的是在嵌入式中,由于觸摸屏的種類多樣、品質不一,采用Tslib的參考配置往往無法獲得較好的觸摸屏觸摸效果,同樣需要經過大量的測試才能得到滿意的配置參數,惡劣情況下,甚至需要對Tslib的算法進行進一步的優化。

下面就Tslib的環境變量、配置檔案等進行簡要的介紹。

1. 環境變量

為了實作Tslib的正确運作,需要對如下的Tslib的環境變量進行配置:

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  //裝置名

Default: /dev/fb0

以上環境變量在實際開發中的實際配置可以根據實際情況決定。

2. 配置檔案

除了環境變量以外,Tslib的配置檔案ts.conf同樣是個十分重要的部分,在ts.conf中配置了需要加載的插件、插件加載順序以及插件的一些限制參數,這些配置參數對觸摸屏的觸摸效果具有十分重要的影響。

下面是Tslib 1.4中的ts.conf的參考配置:

# 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

其中pthres 為Tslib提供的觸摸屏靈敏度門檻插件;variance 為Tslib提供的觸摸屏濾波算法插件;dejitter 為Tslib提供的觸摸屏去噪算法插件;linear為Tslib提供的觸摸屏坐标變換插件。

在Qtopia中,就觸摸屏的調試問題主要涉及到以下三個部分:觸摸屏驅動、Tslib、QTslibTPanelHandlerPrivate封裝。

觸摸屏驅動為與硬體直接接觸部分,為上層的Tslib提供最原始的裝置坐标資料,并可以配置采樣間隔、螢幕靈敏度等。采樣間隔決定了機關時間内的采樣數量,在其他參數不變的情況下,采樣間隔越小意味着機關時間内的采樣數量越多,也就意味着采樣越逼真、越不容易出現采樣資訊丢失如輸入法書寫時丢筆劃的情況,但因為噪聲的影響,采樣間隔越小同時也意味着顯示出來的圖形的效果越差。

Tslib為觸摸屏驅動和應用層之間的适配層,其從驅動處獲得原始的裝置坐标資料,通過一系列的去噪、去抖、坐标變換等操作,來去除噪聲并将原始的裝置坐标轉換為相應的螢幕坐标。

在tslib中為應用層提供了2個主要的接口ts_read()和ts_read_raw(),其中ts_read()為正常情況下的借口,ts_read_raw()為校準情況下的接口。

正常情況下,tslib對驅動采樣到的裝置坐标進行處理的一般過程如下:

raw device --> variance --> dejitter --> linear --> application

module module module

校準情況下,tslib對驅動采樣到的資料進行處理的一般過程如下:

raw device--> Calibrate

QTslibTPanelHandlerPrivate為tslib提供了應用層封裝,為tslib與應用層的接口部分。

在觸摸屏調試過程中,涉及到的參數主要有采樣間隔(驅動)、靈敏度(驅動)、去噪算法及限制(tslib)、去抖算法及限制(tslib)、ts門檻值(tslib)。

由于各種相關期間的影響,在不同的硬體平台上,相關參數可能需要調整。以上參數的互相關系為:采樣間隔越大,采樣點越少,采樣越失真,但因為資訊量少,容易出現丢筆劃等丢失資訊情況,但表現出來的圖形效果将會越好;去噪算法跟采樣間隔應密切互動,采樣間隔越大,去噪限制應越小,反之采樣間隔越小,去噪限制應越大。去抖算法為相對獨立的部分,去抖算法越複雜,帶來的計算量将會變大,系統負載将會變重,但良好的去抖算法可以更好的去除抖動,在進行圖形繪制時将會得到更好的效果;靈敏度和ts門檻值為觸摸屏的靈敏名額,一般不需要進行變動,參考參考值即可。

Tslib校準過程
Tslib校準過程

繼續閱讀