WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)

上傳人:jin****ng 文檔編號(hào):108781798 上傳時(shí)間:2022-06-16 格式:DOC 頁(yè)數(shù):3 大?。?5KB
收藏 版權(quán)申訴 舉報(bào) 下載
WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)_第1頁(yè)
第1頁(yè) / 共3頁(yè)
WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)_第2頁(yè)
第2頁(yè) / 共3頁(yè)
WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)_第3頁(yè)
第3頁(yè) / 共3頁(yè)

最后一頁(yè)預(yù)覽完了!喜歡就下載吧,查找使用更方便

8 積分

下載資源

資源描述:

《WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《WinCE人機(jī)交互簡(jiǎn)潔觸摸屏驅(qū)動(dòng)功不可沒(méi)(3頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、隨著Iphone的流行,觸摸屏成為許多移動(dòng)電子產(chǎn)品的標(biāo)配,使到觸摸屏驅(qū)動(dòng)的開(kāi)發(fā)在嵌入式設(shè)備中也變得越來(lái)越重要了。嵌入式移動(dòng)設(shè)備因其體積小的特點(diǎn)決定了需要一種最為便利的輸入工具。利用觸摸屏用戶(hù)可以很方便的對(duì)嵌入式移動(dòng)設(shè)備進(jìn)行相應(yīng)的操作,而且操作簡(jiǎn)單直觀,是極方便的人機(jī)交互設(shè)備。1.WinCE驅(qū)動(dòng)程序模型分類(lèi)WinCE系統(tǒng)在驅(qū)動(dòng)設(shè)計(jì)上有一個(gè)很方便的功能,就是原始設(shè)備制造商(OEMs)和獨(dú)立硬件開(kāi)發(fā)商(IHVs)可以自主開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序來(lái)支持他們的硬件。因此,在動(dòng)手進(jìn)行觸摸屏驅(qū)動(dòng)程序開(kāi)發(fā)之前,深入了解WinCE系統(tǒng)驅(qū)動(dòng)方式是非常有必要的。(1)從驅(qū)動(dòng)加載方式上的分類(lèi)要編寫(xiě)WinCE驅(qū)動(dòng)程序首先要確定

2、它是屬于哪類(lèi)驅(qū)動(dòng)。一般來(lái)說(shuō),WinCE平臺(tái)上使用的設(shè)備可分為兩類(lèi):內(nèi)建設(shè)備和可安裝設(shè)備。因此,從驅(qū)動(dòng)加載方式上WinCE可分為內(nèi)建設(shè)備驅(qū)動(dòng)(Built-InDriver)和可加載驅(qū)動(dòng)(LoadableDriver)。WinCE系統(tǒng)可直接使用內(nèi)建設(shè)備,因?yàn)閮?nèi)建設(shè)備驅(qū)動(dòng)程序是與WinCE的核心組件緊密相連的,也就是內(nèi)建設(shè)備驅(qū)動(dòng)程序是被靜態(tài)地鏈接到GWES(GraphicsWindowingandEventsSubsystem)的。這些驅(qū)動(dòng)對(duì)應(yīng)的設(shè)備通常在系統(tǒng)啟動(dòng)時(shí),在GWES的進(jìn)程空間內(nèi)被加載,主要是與顯示和輸入有關(guān)的驅(qū)動(dòng)。因?yàn)樗鼈儾皇且元?dú)立的DLL形式存在,所以要求每一個(gè)內(nèi)建驅(qū)動(dòng)程序都必須與設(shè)備

3、驅(qū)動(dòng)程序接口(DDI)的特定接口保持一致。內(nèi)建設(shè)備包括顯示、觸摸屏、音頻、串行埠、LED、電池和PC卡插座等。內(nèi)建驅(qū)動(dòng)程序一般設(shè)計(jì)為動(dòng)態(tài)鏈接庫(kù),但有兩個(gè)例外:電池和LED驅(qū)動(dòng)程序由于小而設(shè)計(jì)為靜態(tài)庫(kù)。它們一般儲(chǔ)存在ROM或閃存內(nèi)。可加載設(shè)備是指可與平臺(tái)連接和分離的第三方接口設(shè)備,可由用戶(hù)隨時(shí)安裝和卸載。這種外圍設(shè)備的驅(qū)動(dòng)也被稱(chēng)為流驅(qū)動(dòng),這些驅(qū)動(dòng)可以在系統(tǒng)啟動(dòng)時(shí)、或者啟動(dòng)后的任何時(shí)候由設(shè)備管理器動(dòng)態(tài)加載。通常這類(lèi)驅(qū)動(dòng)是以DLL動(dòng)態(tài)鏈接庫(kù)的形式存在,加載后的這些驅(qū)動(dòng)程序也只能以用戶(hù)態(tài)的角色運(yùn)行。在WinCE中典型的可加載驅(qū)動(dòng)有:PCMCIAdriver(PCMCIA.dll)、Serialdriv

4、er(SERIAL.dll)、ATAFLASHdriver(ATA.dll)、Ethernetdriver(NE2000.dll,SMSC100FD.dll)。與內(nèi)建驅(qū)動(dòng)程序不同的是,所有可加載流驅(qū)動(dòng)程序都共享一個(gè)公用接口,而且功能也與應(yīng)用程序所用的文件API中的功能匹配。因此,控制可加載設(shè)備的流接口驅(qū)動(dòng)程序一般由應(yīng)用程序存取。也就是說(shuō),流接口驅(qū)動(dòng)程序是由一個(gè)特殊文件來(lái)將設(shè)備功能展現(xiàn)給應(yīng)用程序的,該文件可被打開(kāi)、讀取、寫(xiě)入和關(guān)閉。通常只有OEMs才會(huì)對(duì)內(nèi)建設(shè)備驅(qū)動(dòng)程序進(jìn)行修改,其它自由設(shè)備生產(chǎn)商由于只提供附加的硬件設(shè)備,對(duì)內(nèi)建設(shè)備驅(qū)動(dòng)程序不會(huì)有過(guò)多涉及。(2)從驅(qū)動(dòng)程序?qū)哟紊戏诸?lèi)WinCE最大

5、的好處是具有可定制性,當(dāng)它自帶的驅(qū)動(dòng)程序不能滿(mǎn)足用戶(hù)的要求時(shí),用戶(hù)可以自己編寫(xiě)相應(yīng)的驅(qū)動(dòng)程序。因此按照結(jié)構(gòu)分,WinCE驅(qū)動(dòng)程序又可分為分層的驅(qū)動(dòng)程序和不分層的驅(qū)動(dòng)程序。分層的驅(qū)動(dòng)程序由兩個(gè)設(shè)置好的層組成:上層是模型設(shè)備驅(qū)動(dòng)程序(ModelDeviceDriver,MDD),下層是依賴(lài)平臺(tái)的驅(qū)動(dòng)程序(PlatformDependentDriver,PDD)。分層的驅(qū)動(dòng)程序中的MDD通常是無(wú)需修改可直接使用,MDD的作用是鏈接PDD層并定義它希望調(diào)用的函數(shù)接口:設(shè)備驅(qū)動(dòng)程序提供器接口(DeviceDriverServiceProviderInterface,DDSI)。同時(shí)MDD又把不同的函數(shù)集

6、提供給WinCE內(nèi)核,這些函數(shù)叫做設(shè)備驅(qū)動(dòng)程序接口(DeviceDriverInterface,DDI)。不分層的驅(qū)動(dòng)程序是把PDD與MDD寫(xiě)在一起,沒(méi)有做嚴(yán)格的區(qū)分,通常這種驅(qū)動(dòng)比較簡(jiǎn)單,比如ATADISK。簡(jiǎn)單的說(shuō),內(nèi)建驅(qū)動(dòng)和加載式流驅(qū)動(dòng)是從驅(qū)動(dòng)與系統(tǒng)其它模塊(調(diào)用者)的接口形式上做的分類(lèi);而不分層和分層是從驅(qū)動(dòng)實(shí)現(xiàn)方式上的分類(lèi)。在開(kāi)發(fā)過(guò)程中,MDD層驅(qū)動(dòng)是不需要被修改的。但和MDD層驅(qū)動(dòng)不同的是,PDD層驅(qū)動(dòng)必須被修改成和特定硬件相匹配的代碼。程序員可以自己開(kāi)發(fā)一個(gè)PDD程序,但多數(shù)情況下建議開(kāi)發(fā)者在PlatformBuilder提供的樣例驅(qū)動(dòng)程序上進(jìn)行修改。在WinCE系統(tǒng)中觸摸屏驅(qū)動(dòng)

7、是一種分層驅(qū)動(dòng)。2觸摸屏驅(qū)動(dòng)程序的設(shè)計(jì)和實(shí)現(xiàn)嵌入式設(shè)備觸摸屏按其技術(shù)原理可分為五類(lèi):矢量壓力傳感式、電阻式、電容式、紅外線(xiàn)式和表面聲波式。其中電阻式觸摸屏在嵌入式系統(tǒng)中用的較多,電阻式觸摸屏可分為四線(xiàn)、五線(xiàn)、七線(xiàn)等幾種。一般來(lái)說(shuō),WinCE觸摸屏驅(qū)動(dòng)的設(shè)計(jì)和實(shí)現(xiàn)有以下幾個(gè)步驟:(1)配置和初始化觸摸屏觸摸屏驅(qū)動(dòng)在初始化過(guò)程會(huì)調(diào)用TouchPanelEnable函數(shù),該函數(shù)調(diào)用的DDSI函數(shù)為DdsiTouchPanelEnable和DdsiTouchPanelDisable。這兩個(gè)DDSI接口函數(shù)是驅(qū)動(dòng)實(shí)現(xiàn)的關(guān)鍵所在,分別用于打開(kāi)和關(guān)閉觸摸屏硬件。但是為了降低功耗,這兩個(gè)函數(shù)其實(shí)可以不真正操作

8、硬件,而只是實(shí)現(xiàn)軟件上的控制。同時(shí),在初始化時(shí)還需要進(jìn)行這幾個(gè)配置和初始化:一是創(chuàng)建事件hTouchPanelEvent和hCalibrationSampleAvailable,前者是在正常狀態(tài)下當(dāng)有觸摸筆按下或者按下后需要定時(shí)采集數(shù)據(jù)時(shí)被觸發(fā);而后者是在校準(zhǔn)狀態(tài)下當(dāng)有校準(zhǔn)數(shù)據(jù)輸入時(shí)被觸發(fā)。二是檢查初始化所需的中斷glntrTouch(觸摸屏中斷)和gintrTouchChanged(定時(shí)器中斷),并將這兩個(gè)中斷關(guān)聯(lián)到事件hTouchPanelEvent。三是創(chuàng)建一個(gè)ISR線(xiàn)程TouchPanelplSR,用于等待和處理觸摸屏事件hTouchPanelEvent,它也是整個(gè)驅(qū)動(dòng)程序中唯一的事件

9、源。(2)校準(zhǔn)觸摸屏基準(zhǔn)參數(shù)完成前面繁瑣的工作后,驅(qū)動(dòng)程序的各種功能就都已經(jīng)準(zhǔn)備就緒了,現(xiàn)在就可以實(shí)際操作觸摸屏幕了。但一般來(lái)說(shuō),電阻式觸摸屏需要校準(zhǔn),也就是說(shuō)在驅(qū)動(dòng)啟動(dòng)過(guò)程中MDD層要調(diào)用相應(yīng)的DDSI函數(shù)來(lái)讀取注冊(cè)表中的校正數(shù)據(jù)校正觸摸屏。理想情況下,校準(zhǔn)程序只要在嵌入式設(shè)備初次加電測(cè)試過(guò)程中運(yùn)行一次就可以了,參考值會(huì)被存儲(chǔ)在非易失性存儲(chǔ)器中,以免讓用戶(hù)在以后的加電啟動(dòng)期間再做校準(zhǔn)。不過(guò),高質(zhì)量的觸摸屏驅(qū)動(dòng)程序是應(yīng)該要向用戶(hù)提供一種進(jìn)入校準(zhǔn)例程的途徑,從而在由于溫度漂移或其它因素造成校準(zhǔn)不準(zhǔn)確時(shí)進(jìn)行重新校準(zhǔn)。在理想情況下,校正觸摸屏基準(zhǔn)只需兩組原始數(shù)據(jù),即在屏幕對(duì)角讀取的最小和最大值。但在

10、實(shí)際應(yīng)用中,因?yàn)樵S多電阻式觸摸屏存在明顯的非線(xiàn)性,如果只在最小和最大值之間簡(jiǎn)單的插入位置數(shù)值會(huì)導(dǎo)致驅(qū)動(dòng)程序非常的不精確。因此,在WinCE中需要獲取多個(gè)校準(zhǔn)點(diǎn),常用的校準(zhǔn)點(diǎn)數(shù)量為5個(gè)。方法是:首先驅(qū)動(dòng)程序在函數(shù)DdsiTouchPanelGetDeviceCaps中設(shè)置校準(zhǔn)點(diǎn)的個(gè)數(shù);是系統(tǒng)在TouchDriverCalibrationPointGet中獲取每個(gè)校準(zhǔn)點(diǎn)的屏幕坐標(biāo);是在屏幕界面的校準(zhǔn)點(diǎn)坐標(biāo)處顯示一個(gè)位置符號(hào),用戶(hù)需要精確地在位置符號(hào)按下觸摸屏;驅(qū)動(dòng)程序通過(guò)TouchPanelReadCalibrationPoint函數(shù)讀取相應(yīng)的觸摸屏坐標(biāo)值;然后再開(kāi)始下一個(gè)校準(zhǔn)點(diǎn),直到循環(huán)設(shè)定的次

11、數(shù)后將采集到的觸摸屏坐標(biāo)值和校準(zhǔn)點(diǎn)屏幕坐標(biāo)送到TouchPanelSetCalibration函數(shù)中進(jìn)行處理,該函數(shù)將產(chǎn)生校準(zhǔn)基準(zhǔn)參數(shù)。校準(zhǔn)完成之后,觸摸屏便可以開(kāi)始正常的操作了。3)判斷屏幕是否被觸摸一旦完成了觸摸屏硬件設(shè)置、初始化和基準(zhǔn)參數(shù)校準(zhǔn)后,接下來(lái)就需要用一種可靠的方法來(lái)判斷屏幕是否被觸摸了。WinCE提供了屏幕是否被觸摸的檢測(cè)機(jī)制,而且當(dāng)觸摸事件發(fā)生時(shí)還可選擇是否中斷主處理器。判斷屏幕是否被觸摸的驅(qū)動(dòng)程序的函數(shù)名叫WaitForTouchState()。當(dāng)屏幕被初次觸摸時(shí)喚醒主機(jī)的中斷,稱(chēng)為PEN_DOWN中斷。這樣做可以讓驅(qū)動(dòng)程序在屏幕沒(méi)有被觸摸時(shí)中斷自己的執(zhí)行,而不消耗任何CP

12、U資源,而一旦用戶(hù)觸摸屏幕,驅(qū)動(dòng)程序就被喚醒并進(jìn)入轉(zhuǎn)換模式。當(dāng)被喚醒后就有一組模數(shù)數(shù)據(jù)等待轉(zhuǎn)換并產(chǎn)生中斷信號(hào)。中斷是硬件與軟件打交道的重要方法,所以大多數(shù)驅(qū)動(dòng)程序都涉及到中斷處理。就中斷處理而言,WinCE采用了一種獨(dú)特的方法。它將中斷處理分為兩步:中斷服務(wù)例程(ISR)和中斷服務(wù)線(xiàn)程(IST)。具體來(lái)講就是把每個(gè)硬件的設(shè)備中斷請(qǐng)求(IRQ)和一個(gè)ISR聯(lián)系起來(lái),當(dāng)一個(gè)中斷發(fā)生并未被屏蔽時(shí),內(nèi)核調(diào)用該中斷注冊(cè)的ISR。因?yàn)镮SR運(yùn)行于內(nèi)核模式,所以應(yīng)該被設(shè)計(jì)得盡可能的短,ISR的基本職責(zé)是引導(dǎo)內(nèi)核調(diào)度和啟動(dòng)合適的1ST。1ST在設(shè)備驅(qū)動(dòng)程序軟件模塊中編寫(xiě),它從硬件獲取或向硬件發(fā)送數(shù)據(jù)和控制代碼

13、,并進(jìn)一步處理設(shè)備中斷。WinCE觸摸屏驅(qū)動(dòng)程序是采用中斷方式對(duì)觸摸筆的按下?tīng)顟B(tài)進(jìn)行檢測(cè),當(dāng)檢測(cè)到觸摸筆按下時(shí)產(chǎn)生的中斷,就會(huì)觸發(fā)一個(gè)事件通知一個(gè)工作線(xiàn)程開(kāi)始采集數(shù)據(jù)。同時(shí),驅(qū)動(dòng)將打開(kāi)一個(gè)硬件定時(shí)器,只要檢測(cè)到觸摸筆仍然在按下?tīng)顟B(tài),將定時(shí)觸發(fā)同一個(gè)事件通知這個(gè)工作線(xiàn)程繼續(xù)采集數(shù)據(jù),直到觸摸筆抬起后關(guān)閉該定時(shí)器。簡(jiǎn)單的說(shuō),就是驅(qū)動(dòng)程序會(huì)同時(shí)采用觸摸屏中斷和定時(shí)器中斷這兩個(gè)中斷源。目的在于不僅可以監(jiān)控觸摸筆按下和抬起狀態(tài),而且可以檢測(cè)觸摸筆按下時(shí)的拖動(dòng)軌跡。觸摸屏中斷的兩個(gè)邏輯中斷分別是:SYSINTR_TOUCH是用于觸摸筆點(diǎn)擊觸摸屏?xí)r產(chǎn)生相應(yīng)的中斷;SYSINTR_TOUCH_CHANGE則用

14、于觸摸筆離開(kāi)時(shí)產(chǎn)生相應(yīng)的中斷。(4)獲得穩(wěn)定的、去抖動(dòng)的測(cè)量數(shù)據(jù)在進(jìn)行觸摸屏程序開(kāi)發(fā)時(shí),一定要注意原始的觸摸測(cè)量數(shù)據(jù)經(jīng)常會(huì)有一些噪聲和偏差,這是正常的。一般來(lái)說(shuō),只有用戶(hù)緊緊壓住電阻觸摸屏才能得到兩個(gè)連續(xù)的讀數(shù),然而我們會(huì)發(fā)現(xiàn)當(dāng)觸控筆或手指按上或離開(kāi)觸摸屏?xí)r,讀數(shù)的變化要比保持穩(wěn)定壓力時(shí)大得多。這是因?yàn)橛脩?hù)是以機(jī)械的方式連通二個(gè)平面電阻-觸摸層,當(dāng)用戶(hù)按壓和釋放觸摸屏?xí)r,在很短的一段時(shí)間內(nèi)觸摸屏的電氣連接均處于臨界狀態(tài)。這時(shí),我們需要丟棄這些讀數(shù)直到系統(tǒng)穩(wěn)定下來(lái),否則提交的觸摸位置讀數(shù)會(huì)產(chǎn)生大幅跳躍,導(dǎo)致嚴(yán)重的失真或觸摸位置漂移。這時(shí)就需要進(jìn)行折衷考慮,這也是觸摸屏驅(qū)動(dòng)設(shè)計(jì)的關(guān)鍵所在。如果我們

15、要求較窄的穩(wěn)定窗口,那么驅(qū)動(dòng)程序?qū)o(wú)法跟蹤快速的拖曳”操作;如果加寬穩(wěn)定窗口,就可能面臨著許多風(fēng)險(xiǎn),這些風(fēng)險(xiǎn)包括接收到不精確的觸摸數(shù)據(jù),或上面描述處于臨界狀態(tài)的層連接結(jié)果。這時(shí),就需要通過(guò)實(shí)驗(yàn)來(lái)確定適合系統(tǒng)的最佳值。在正常情況下,當(dāng)屏幕被觸摸時(shí)驅(qū)動(dòng)程序應(yīng)會(huì)得到每個(gè)穩(wěn)定的讀數(shù),并利用簡(jiǎn)單的線(xiàn)性插值法將原始數(shù)據(jù)轉(zhuǎn)換成像素坐標(biāo)。讀取觸摸點(diǎn)的坐標(biāo)是由DdsiTouchPanalGetPoint()函數(shù)實(shí)現(xiàn)的。另外,在每個(gè)轉(zhuǎn)換過(guò)程的前后,驅(qū)動(dòng)程序必須檢查并確認(rèn)屏幕仍處于被觸摸狀態(tài)。因?yàn)槲覀儾幌M杉綄?shí)際上是處于開(kāi)路狀態(tài)”的穩(wěn)定讀數(shù)。因此,在讀取觸摸數(shù)據(jù)時(shí),我們需要對(duì)原始數(shù)據(jù)進(jìn)行去抖動(dòng)處理,然后確定屏幕被觸摸時(shí)是否有穩(wěn)定的讀數(shù);如果不穩(wěn)定就要繼續(xù)讀取數(shù)據(jù)并進(jìn)行去抖動(dòng)處理,直到得到穩(wěn)定的數(shù)據(jù)為止。最后,觸摸屏驅(qū)動(dòng)程序應(yīng)將觸摸狀態(tài)和位置變化信息發(fā)送給更高層的應(yīng)用軟件,以完成一次完整的觸摸操作。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!