新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 觸摸屏驅動程序的設計和實現

        觸摸屏驅動程序的設計和實現

        作者: 時間:2009-08-28 來源:網絡 收藏

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

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

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

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

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

        電容式觸摸屏相關文章:電容式觸摸屏原理


        關鍵詞: 觸摸屏 驅動程序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大埔县| 钦州市| 镇江市| 潮州市| 息烽县| 巴楚县| 衡山县| 芮城县| 勐海县| 龙南县| 修文县| 大名县| 来安县| 象州县| 丘北县| 天津市| 卢龙县| 女性| 平谷区| 临江市| 文安县| 宜丰县| 普兰店市| 砚山县| 莱阳市| 和顺县| 库车县| 龙山县| 新竹市| 仁化县| 英山县| 张家港市| 香港| 萨迦县| 荆门市| 神池县| 甘南县| 福贡县| 阿勒泰市| 舒城县| 洪江市|