資源描述:
《WinCE觸摸屏驅(qū)動開發(fā)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、WinCE觸摸屏驅(qū)動開發(fā)上一篇/下一篇?2009-06-3015:41:26查看(188)/評論(1)/評分(0/0)觸摸屏驅(qū)動開發(fā)1.觸摸屏驅(qū)動程序的模型1.1分層觸摸屏驅(qū)動層序結(jié)構(gòu)本觸摸屏驅(qū)動采用那個分層驅(qū)動程序結(jié)構(gòu),其驅(qū)動模型如下圖所示,這種結(jié)構(gòu)將驅(qū)動程序代碼區(qū)分為上層模型設(shè)備驅(qū)動層(MDD),下層是依賴平臺的驅(qū)動層(PDD)。其中MDD層通常無需修改就可以直接使用,改部分提供面向GWES的DDI的接口,而MDD通過指定的DDSI函數(shù)接口調(diào)用PDD,這就是我們通常驅(qū)動要實現(xiàn)的部分。PDD部分和MDD部分除了DDSI函數(shù)集接口外,還要實現(xiàn)一些指定的變量的定義或變量初始
2、化動作(比如,gIntrTouch和gIntrTouchChanged在PDD層定義,但主要在MDD層使用。),也就是說MDD層和PDD層之間并不一定是以嚴格的分層模型來實現(xiàn)的,有時候也要通過共享變量的方式來完成交互。1.2DDI函數(shù)集(MDD層)TouchPanelPowerHandler(BOOLboff)TouchScreen的電源管理函數(shù),boff:TRUE表示關(guān)閉電源,F(xiàn)ALSE表示打開電源,其只是調(diào)用DdsiTouchPanelPowerHandler()函數(shù),該函數(shù)在進入或退出poweroff狀態(tài)時產(chǎn)生。TouchPanelCalibrationAPoint
3、()該函數(shù)用于校準輸入的觸摸屏坐標,把觸摸屏坐標轉(zhuǎn)換為顯示坐標,利用了公式Sx=A1*Tx+B1*Ty+C和Sy=A2*Tx+B2*Ty+C2。TouchPanelReadCalibrationPoint()在執(zhí)行觸摸屏校準程序時,用這個函數(shù)獲得在當前校準點的十字形上點擊的觸摸屏坐標。TouchPanelReadCalibrationAbord()該函數(shù)在校準取消時被調(diào)用(在觸摸屏校準程序運行過程中取消校準),僅僅設(shè)置狀態(tài)位和事件后返回。TouchPanelDisable()禁用觸摸屏(touchpanel)設(shè)備,該函數(shù)關(guān)閉ISR,停止中斷和注銷事件及其他同步手段,此函數(shù)
4、調(diào)用了DdsiTouchPanelDisable()函數(shù)。TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK???pfnCallback)PfnCallback是指向處理touchpanel事件的回調(diào)函數(shù),該函數(shù)的執(zhí)行動作:⑴創(chuàng)建事件hTouchPanelEvent和hCalibrationSampleAvailable,其中當觸筆按下或抬起,或者定時器中斷時會觸發(fā)hTouchPanelEvent事件,而在校準狀態(tài)下當有校準數(shù)據(jù)輸入時會觸發(fā)hCalibrationSampleAvailable事件。⑵初始化臨界區(qū),初始化所需的觸摸屏中斷gI
5、ntrTouch和gIntrTouchChanged,并且把它們關(guān)聯(lián)到事件hTouchPanelEvent中。⑶創(chuàng)建ISTTouchPanelpISR,并設(shè)定其優(yōu)先級。TouchPanelSetCalibration()該函數(shù)通過運行觸摸屏校準程序時的校準動作獲得顯示坐標(Sx,Sy)和觸筆在十字形上按下的觸摸坐標(Tx,Ty)用于計算校準參數(shù)A1,B1,C1和A2,B2,C2。TouchPanelGetDeviceCaps()用于查詢觸摸屏設(shè)備支持的具體功能,通過DDSI函數(shù)查詢相應(yīng)的信息,當查詢屏幕坐標信息時保存屏幕信息,供后面程序計算校準參數(shù)所用。TouchPane
6、lSetMode()用于設(shè)置觸摸屏的工作模式(采用低采樣率還是高采樣率),當設(shè)置IST優(yōu)先級時直接通過內(nèi)核API來完成,而直接將其他設(shè)置交給DdsiTouchPanelSetMode()函數(shù)來處理。1.3DDSI函數(shù)集(PDD層)DdsiTouchPanelGetDeviceCaps(INTiIndex,LPVOIDlpOutput)查詢touchpanel設(shè)備的相關(guān)信息。IIndex:查詢的索引值,其取值如下:TPDC_SAMPLE_RATE_ID:查詢采樣率信息。TPDC_CALIBRATION_POINT_COUNT_ID:查詢用于校驗的點的個數(shù)。TPDC_CALI
7、BRATION_POINT_ID:查詢需要校驗的點的坐標。LpOutput:根據(jù)iIndex值分別指向相關(guān)的信息。DdsiTouchPanelSetMode()設(shè)置TouchPanel工作模式。iIndex:模式索引TPSM_SAMPLERATE_HIGH_ID:高采樣率TPSM_SAMPLERATE_LOW_ID:低采樣率lpInput:指向包含相關(guān)信息的內(nèi)存DdsiTouchPanelEnable()該函數(shù)所執(zhí)行的動作:⑴為需要用到的I/O,ADC,PWM和INT寄存器分配內(nèi)存空間。⑵配置觸摸屏控制器、中斷控制器和PWM的