歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

WinCE人機交互簡潔觸摸屏驅(qū)動功不可沒

  • 資源ID:108781798       資源大小:25KB        全文頁數(shù):3頁
  • 資源格式: DOC        下載積分:8積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要8積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

WinCE人機交互簡潔觸摸屏驅(qū)動功不可沒

隨著Iphone的流行,觸摸屏成為許多移動電子產(chǎn)品的標配,使到觸摸屏驅(qū)動的開發(fā)在嵌入式設備中也變得越來越重要了。嵌入式移動設備因其體積小的特點決定了需要一種最為便利的輸入工具。利用觸摸屏用戶可以很方便的對嵌入式移動設備進行相應的操作,而且操作簡單直觀,是極方便的人機交互設備。1.WinCE驅(qū)動程序模型分類WinCE系統(tǒng)在驅(qū)動設計上有一個很方便的功能,就是原始設備制造商(OEMs)和獨立硬件開發(fā)商(IHVs)可以自主開發(fā)設備驅(qū)動程序來支持他們的硬件。因此,在動手進行觸摸屏驅(qū)動程序開發(fā)之前,深入了解WinCE系統(tǒng)驅(qū)動方式是非常有必要的。(1)從驅(qū)動加載方式上的分類要編寫WinCE驅(qū)動程序首先要確定它是屬于哪類驅(qū)動。一般來說,WinCE平臺上使用的設備可分為兩類:內(nèi)建設備和可安裝設備。因此,從驅(qū)動加載方式上WinCE可分為內(nèi)建設備驅(qū)動(Built-InDriver)和可加載驅(qū)動(LoadableDriver)。WinCE系統(tǒng)可直接使用內(nèi)建設備,因為內(nèi)建設備驅(qū)動程序是與WinCE的核心組件緊密相連的,也就是內(nèi)建設備驅(qū)動程序是被靜態(tài)地鏈接到GWES(GraphicsWindowingandEventsSubsystem)的。這些驅(qū)動對應的設備通常在系統(tǒng)啟動時,在GWES的進程空間內(nèi)被加載,主要是與顯示和輸入有關的驅(qū)動。因為它們不是以獨立的DLL形式存在,所以要求每一個內(nèi)建驅(qū)動程序都必須與設備驅(qū)動程序接口(DDI)的特定接口保持一致。內(nèi)建設備包括顯示、觸摸屏、音頻、串行埠、LED、電池和PC卡插座等。內(nèi)建驅(qū)動程序一般設計為動態(tài)鏈接庫,但有兩個例外:電池和LED驅(qū)動程序由于小而設計為靜態(tài)庫。它們一般儲存在ROM或閃存內(nèi)??杉虞d設備是指可與平臺連接和分離的第三方接口設備,可由用戶隨時安裝和卸載。這種外圍設備的驅(qū)動也被稱為流驅(qū)動,這些驅(qū)動可以在系統(tǒng)啟動時、或者啟動后的任何時候由設備管理器動態(tài)加載。通常這類驅(qū)動是以DLL動態(tài)鏈接庫的形式存在,加載后的這些驅(qū)動程序也只能以用戶態(tài)的角色運行。在WinCE中典型的可加載驅(qū)動有:PCMCIAdriver(PCMCIA.dll)、Serialdriver(SERIAL.dll)、ATAFLASHdriver(ATA.dll)、Ethernetdriver(NE2000.dll,SMSC100FD.dll)。與內(nèi)建驅(qū)動程序不同的是,所有可加載流驅(qū)動程序都共享一個公用接口,而且功能也與應用程序所用的文件API中的功能匹配。因此,控制可加載設備的流接口驅(qū)動程序一般由應用程序存取。也就是說,流接口驅(qū)動程序是由一個特殊文件來將設備功能展現(xiàn)給應用程序的,該文件可被打開、讀取、寫入和關閉。通常只有OEMs才會對內(nèi)建設備驅(qū)動程序進行修改,其它自由設備生產(chǎn)商由于只提供附加的硬件設備,對內(nèi)建設備驅(qū)動程序不會有過多涉及。(2)從驅(qū)動程序?qū)哟紊戏诸怶inCE最大的好處是具有可定制性,當它自帶的驅(qū)動程序不能滿足用戶的要求時,用戶可以自己編寫相應的驅(qū)動程序。因此按照結(jié)構(gòu)分,WinCE驅(qū)動程序又可分為分層的驅(qū)動程序和不分層的驅(qū)動程序。分層的驅(qū)動程序由兩個設置好的層組成:上層是模型設備驅(qū)動程序(ModelDeviceDriver,MDD),下層是依賴平臺的驅(qū)動程序(PlatformDependentDriver,PDD)。分層的驅(qū)動程序中的MDD通常是無需修改可直接使用,MDD的作用是鏈接PDD層并定義它希望調(diào)用的函數(shù)接口:設備驅(qū)動程序提供器接口(DeviceDriverServiceProviderInterface,DDSI)。同時MDD又把不同的函數(shù)集提供給WinCE內(nèi)核,這些函數(shù)叫做設備驅(qū)動程序接口(DeviceDriverInterface,DDI)。不分層的驅(qū)動程序是把PDD與MDD寫在一起,沒有做嚴格的區(qū)分,通常這種驅(qū)動比較簡單,比如ATADISK。簡單的說,內(nèi)建驅(qū)動和加載式流驅(qū)動是從驅(qū)動與系統(tǒng)其它模塊(調(diào)用者)的接口形式上做的分類;而不分層和分層是從驅(qū)動實現(xiàn)方式上的分類。在開發(fā)過程中,MDD層驅(qū)動是不需要被修改的。但和MDD層驅(qū)動不同的是,PDD層驅(qū)動必須被修改成和特定硬件相匹配的代碼。程序員可以自己開發(fā)一個PDD程序,但多數(shù)情況下建議開發(fā)者在PlatformBuilder提供的樣例驅(qū)動程序上進行修改。在WinCE系統(tǒng)中觸摸屏驅(qū)動是一種分層驅(qū)動。2觸摸屏驅(qū)動程序的設計和實現(xiàn)嵌入式設備觸摸屏按其技術(shù)原理可分為五類:矢量壓力傳感式、電阻式、電容式、紅外線式和表面聲波式。其中電阻式觸摸屏在嵌入式系統(tǒng)中用的較多,電阻式觸摸屏可分為四線、五線、七線等幾種。一般來說,WinCE觸摸屏驅(qū)動的設計和實現(xiàn)有以下幾個步驟:(1)配置和初始化觸摸屏觸摸屏驅(qū)動在初始化過程會調(diào)用TouchPanelEnable函數(shù),該函數(shù)調(diào)用的DDSI函數(shù)為DdsiTouchPanelEnable和DdsiTouchPanelDisable。這兩個DDSI接口函數(shù)是驅(qū)動實現(xiàn)的關鍵所在,分別用于打開和關閉觸摸屏硬件。但是為了降低功耗,這兩個函數(shù)其實可以不真正操作硬件,而只是實現(xiàn)軟件上的控制。同時,在初始化時還需要進行這幾個配置和初始化:一是創(chuàng)建事件hTouchPanelEvent和hCalibrationSampleAvailable,前者是在正常狀態(tài)下當有觸摸筆按下或者按下后需要定時采集數(shù)據(jù)時被觸發(fā);而后者是在校準狀態(tài)下當有校準數(shù)據(jù)輸入時被觸發(fā)。二是檢查初始化所需的中斷glntrTouch(觸摸屏中斷)和gintrTouchChanged(定時器中斷),并將這兩個中斷關聯(lián)到事件hTouchPanelEvent。三是創(chuàng)建一個ISR線程TouchPanelplSR,用于等待和處理觸摸屏事件hTouchPanelEvent,它也是整個驅(qū)動程序中唯一的事件源。(2)校準觸摸屏基準參數(shù)完成前面繁瑣的工作后,驅(qū)動程序的各種功能就都已經(jīng)準備就緒了,現(xiàn)在就可以實際操作觸摸屏幕了。但一般來說,電阻式觸摸屏需要校準,也就是說在驅(qū)動啟動過程中MDD層要調(diào)用相應的DDSI函數(shù)來讀取注冊表中的校正數(shù)據(jù)校正觸摸屏。理想情況下,校準程序只要在嵌入式設備初次加電測試過程中運行一次就可以了,參考值會被存儲在非易失性存儲器中,以免讓用戶在以后的加電啟動期間再做校準。不過,高質(zhì)量的觸摸屏驅(qū)動程序是應該要向用戶提供一種進入校準例程的途徑,從而在由于溫度漂移或其它因素造成校準不準確時進行重新校準。在理想情況下,校正觸摸屏基準只需兩組原始數(shù)據(jù),即在屏幕對角讀取的最小和最大值。但在實際應用中,因為許多電阻式觸摸屏存在明顯的非線性,如果只在最小和最大值之間簡單的插入位置數(shù)值會導致驅(qū)動程序非常的不精確。因此,在WinCE中需要獲取多個校準點,常用的校準點數(shù)量為5個。方法是:首先驅(qū)動程序在函數(shù)DdsiTouchPanelGetDeviceCaps中設置校準點的個數(shù);是系統(tǒng)在TouchDriverCalibrationPointGet中獲取每個校準點的屏幕坐標;是在屏幕界面的校準點坐標處顯示一個位置符號,用戶需要精確地在位置符號按下觸摸屏;驅(qū)動程序通過TouchPanelReadCalibrationPoint函數(shù)讀取相應的觸摸屏坐標值;然后再開始下一個校準點,直到循環(huán)設定的次數(shù)后將采集到的觸摸屏坐標值和校準點屏幕坐標送到TouchPanelSetCalibration函數(shù)中進行處理,該函數(shù)將產(chǎn)生校準基準參數(shù)。校準完成之后,觸摸屏便可以開始正常的操作了。3)判斷屏幕是否被觸摸一旦完成了觸摸屏硬件設置、初始化和基準參數(shù)校準后,接下來就需要用一種可靠的方法來判斷屏幕是否被觸摸了。WinCE提供了屏幕是否被觸摸的檢測機制,而且當觸摸事件發(fā)生時還可選擇是否中斷主處理器。判斷屏幕是否被觸摸的驅(qū)動程序的函數(shù)名叫WaitForTouchState()。當屏幕被初次觸摸時喚醒主機的中斷,稱為PEN_DOWN中斷。這樣做可以讓驅(qū)動程序在屏幕沒有被觸摸時中斷自己的執(zhí)行,而不消耗任何CPU資源,而一旦用戶觸摸屏幕,驅(qū)動程序就被喚醒并進入轉(zhuǎn)換模式。當被喚醒后就有一組模數(shù)數(shù)據(jù)等待轉(zhuǎn)換并產(chǎn)生中斷信號。中斷是硬件與軟件打交道的重要方法,所以大多數(shù)驅(qū)動程序都涉及到中斷處理。就中斷處理而言,WinCE采用了一種獨特的方法。它將中斷處理分為兩步:中斷服務例程(ISR)和中斷服務線程(IST)。具體來講就是把每個硬件的設備中斷請求(IRQ)和一個ISR聯(lián)系起來,當一個中斷發(fā)生并未被屏蔽時,內(nèi)核調(diào)用該中斷注冊的ISR。因為ISR運行于內(nèi)核模式,所以應該被設計得盡可能的短,ISR的基本職責是引導內(nèi)核調(diào)度和啟動合適的1ST。1ST在設備驅(qū)動程序軟件模塊中編寫,它從硬件獲取或向硬件發(fā)送數(shù)據(jù)和控制代碼,并進一步處理設備中斷。WinCE觸摸屏驅(qū)動程序是采用中斷方式對觸摸筆的按下狀態(tài)進行檢測,當檢測到觸摸筆按下時產(chǎn)生的中斷,就會觸發(fā)一個事件通知一個工作線程開始采集數(shù)據(jù)。同時,驅(qū)動將打開一個硬件定時器,只要檢測到觸摸筆仍然在按下狀態(tài),將定時觸發(fā)同一個事件通知這個工作線程繼續(xù)采集數(shù)據(jù),直到觸摸筆抬起后關閉該定時器。簡單的說,就是驅(qū)動程序會同時采用觸摸屏中斷和定時器中斷這兩個中斷源。目的在于不僅可以監(jiān)控觸摸筆按下和抬起狀態(tài),而且可以檢測觸摸筆按下時的拖動軌跡。觸摸屏中斷的兩個邏輯中斷分別是:SYSINTR_TOUCH是用于觸摸筆點擊觸摸屏時產(chǎn)生相應的中斷;SYSINTR_TOUCH_CHANGE則用于觸摸筆離開時產(chǎn)生相應的中斷。(4)獲得穩(wěn)定的、去抖動的測量數(shù)據(jù)在進行觸摸屏程序開發(fā)時,一定要注意原始的觸摸測量數(shù)據(jù)經(jīng)常會有一些噪聲和偏差,這是正常的。一般來說,只有用戶緊緊壓住電阻觸摸屏才能得到兩個連續(xù)的讀數(shù),然而我們會發(fā)現(xiàn)當觸控筆或手指按上或離開觸摸屏時,讀數(shù)的變化要比保持穩(wěn)定壓力時大得多。這是因為用戶是以機械的方式連通二個平面電阻-觸摸層,當用戶按壓和釋放觸摸屏時,在很短的一段時間內(nèi)觸摸屏的電氣連接均處于臨界狀態(tài)。這時,我們需要丟棄這些讀數(shù)直到系統(tǒng)穩(wěn)定下來,否則提交的觸摸位置讀數(shù)會產(chǎn)生大幅跳躍,導致嚴重的失真或觸摸位置漂移。這時就需要進行折衷考慮,這也是觸摸屏驅(qū)動設計的關鍵所在。如果我們要求較窄的穩(wěn)定窗口,那么驅(qū)動程序?qū)o法跟蹤快速的拖曳”操作;如果加寬穩(wěn)定窗口,就可能面臨著許多風險,這些風險包括接收到不精確的觸摸數(shù)據(jù),或上面描述處于臨界狀態(tài)的層連接結(jié)果。這時,就需要通過實驗來確定適合系統(tǒng)的最佳值。在正常情況下,當屏幕被觸摸時驅(qū)動程序應會得到每個穩(wěn)定的讀數(shù),并利用簡單的線性插值法將原始數(shù)據(jù)轉(zhuǎn)換成像素坐標。讀取觸摸點的坐標是由DdsiTouchPanalGetPoint()函數(shù)實現(xiàn)的。另外,在每個轉(zhuǎn)換過程的前后,驅(qū)動程序必須檢查并確認屏幕仍處于被觸摸狀態(tài)。因為我們不希望采集到實際上是處于開路狀態(tài)”的穩(wěn)定讀數(shù)。因此,在讀取觸摸數(shù)據(jù)時,我們需要對原始數(shù)據(jù)進行去抖動處理,然后確定屏幕被觸摸時是否有穩(wěn)定的讀數(shù);如果不穩(wěn)定就要繼續(xù)讀取數(shù)據(jù)并進行去抖動處理,直到得到穩(wěn)定的數(shù)據(jù)為止。最后,觸摸屏驅(qū)動程序應將觸摸狀態(tài)和位置變化信息發(fā)送給更高層的應用軟件,以完成一次完整的觸摸操作。

注意事項

本文(WinCE人機交互簡潔觸摸屏驅(qū)動功不可沒)為本站會員(jin****ng)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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