新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 觸摸屏驅(qū)動程序的設(shè)計和實現(xiàn)

觸摸屏驅(qū)動程序的設(shè)計和實現(xiàn)

作者: 時間:2009-08-28 來源:網(wǎng)絡(luò) 收藏

在理想情況下,校正基準(zhǔn)只需兩組原始數(shù)據(jù),即在屏幕對角讀取的最小和最大值。但在實際應(yīng)用中,因為許多電阻式存在明顯的非線性,如果只在最小和最大值之間簡單的插入位置數(shù)值會導(dǎo)致非常的不精確。因此,在WinCE中需要獲取多個校準(zhǔn)點,常用的校準(zhǔn)點數(shù)量為5個。

方法是:①首先在函數(shù)DdsiTouchPanelGetDeviceCaps 中設(shè)置校準(zhǔn)點的個數(shù);②是系統(tǒng)在 TouchDriverCalibrationPointGet中獲取每個校準(zhǔn)點的屏幕坐標(biāo);③是在屏幕界面的校準(zhǔn)點坐標(biāo)處顯示一個位置符號,用戶需要精確地在位置符號按下;④通過TouchPanelReadCalibrationPoint函數(shù)讀取相應(yīng)的觸摸屏坐標(biāo)值;⑤然后再開始下一個校準(zhǔn)點,直到循環(huán)設(shè)定的次數(shù)后將采集到的觸摸屏坐標(biāo)值和校準(zhǔn)點屏幕坐標(biāo)送到TouchPanelSetCalibration函數(shù)中進(jìn)行處理,該函數(shù)將產(chǎn)生校準(zhǔn)基準(zhǔn)參數(shù)。校準(zhǔn)完成之后,觸摸屏便可以開始正常的操作了。

(3)判斷屏幕是否被觸摸

一旦完成了觸摸屏硬件設(shè)置、初始化和基準(zhǔn)參數(shù)校準(zhǔn)后,接下來就需要用一種可靠的方法來判斷屏幕是否被觸摸了。WinCE提供了屏幕是否被觸摸的檢測機(jī)制,而且當(dāng)觸摸事件發(fā)生時還可選擇是否中斷主處理器。判斷屏幕是否被觸摸的驅(qū)動程序的函數(shù)名叫WaitForTouchState()。當(dāng)屏幕被初次觸摸時喚醒主機(jī)的中斷,稱為PEN_DOWN中斷。這樣做可以讓驅(qū)動程序在屏幕沒有被觸摸時中斷自己的執(zhí)行,而不消耗任何CPU資源,而一旦用戶觸摸屏幕,驅(qū)動程序就被喚醒并進(jìn)入轉(zhuǎn)換模式。

當(dāng)被喚醒后就有一組模數(shù)數(shù)據(jù)等待轉(zhuǎn)換并產(chǎn)生中斷信號。中斷是硬件與軟件打交道的重要方法,所以大多數(shù)驅(qū)動程序都涉及到中斷處理。就中斷處理而言, WinCE采用了一種獨特的方法。它將中斷處理分為兩步:中斷服務(wù)例程(ISR)和中斷服務(wù)線程(IST)。具體來講就是把每個硬件的設(shè)備中斷請求 (IRQ) 和一個ISR 聯(lián)系起來,當(dāng)一個中斷發(fā)生并未被屏蔽時,內(nèi)核調(diào)用該中斷注冊的ISR。因為ISR 運行于內(nèi)核模式,所以應(yīng)該被設(shè)計得盡可能的短,ISR 的基本職責(zé)是引導(dǎo)內(nèi)核調(diào)度和啟動合適的IST。IST 在設(shè)備驅(qū)動程序軟件模塊中編寫,它從硬件獲取或向硬件發(fā)送數(shù)據(jù)和控制代碼,并進(jìn)一步處理設(shè)備中斷。
WinCE觸摸屏驅(qū)動程序是采用中斷方式對觸摸筆的按下狀態(tài)進(jìn)行檢測,當(dāng)檢測到觸摸筆按下時產(chǎn)生的中斷,就會觸發(fā)一個事件通知一個工作線程開始采集數(shù)據(jù)。同時,驅(qū)動將打開一個硬件定時器,只要檢測到觸摸筆仍然在按下狀態(tài),將定時觸發(fā)同一個事件通知這個工作線程繼續(xù)采集數(shù)據(jù),直到觸摸筆抬起后關(guān)閉該定時器。簡單的說,就是驅(qū)動程序會同時采用觸摸屏中斷和定時器中斷這兩個中斷源。目的在于不僅可以監(jiān)控觸摸筆按下和抬起狀態(tài),而且可以檢測觸摸筆按下時的拖動軌跡。觸摸屏中斷的兩個邏輯中斷分別是:SYSINTR_TOUCH是用于觸摸筆點擊觸摸屏?xí)r產(chǎn)生相應(yīng)的中斷;SYSINTR_TOUCH_CHANGE 則用于觸摸筆離開時產(chǎn)生相應(yīng)的中斷。

電容式觸摸屏相關(guān)文章:電容式觸摸屏原理


關(guān)鍵詞: 觸摸屏 驅(qū)動程序

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉