国产成人精品a视频一区www_国产区视频在线观看_99色视频_欲色av_亚洲一区电影_亚洲综合视频一区

WinCE 7.0下的觸摸屏驅動

來源:網絡

點擊:1188

A+ A-

所屬頻道:新聞中心

關鍵詞:WinCE 7.0,觸摸屏

      在嵌入式系統中較為常用的是四線電阻式觸摸屏,通過檢測x軸和y軸的電壓,來確定觸點的位置。一般觸摸屏系統結構為:觸摸屏->觸摸屏控制器->處理器。

      wince7下觸摸屏的驅動分為PDD層(位于bsp目錄中)和MDD層(位于public目錄中)。PDD層和MDD層通過DDSI接口函數連接,MDD層和上層通過DDI函數連接。其中MDD層一般無需修改,我們只需修改PDD層的代碼。

      比如我的bsp目錄下觸摸屏驅動中的touchscreenpdd.cpp文件中主要有如下函數:

      TchPdd_Init()

      TchPdd_Ioctl()

      PDDTouchIST()

      PDDInitializeHardware()

      PDDTouchPanelEnable()

      PDDTouchPanelGetPoint()

      PDDCalibrationThread()

      PDDStartCalibrationThread()

      PDDDeInitailzeHardware()

      PDDTouchPanelDisable()

      其中TchPdd開頭的函數就是DDSI函數,PDD開頭的函數就是PDD層的函數。MDD層會最先調用TchPdd_Init()函數,該函數會將DDSI函數以函數指針的形式傳遞給MDD層,并調用PDD層的函數進行必要的初始化,如調用PDDInitializeHardware()來初始化SPI,GPIO(我的觸摸屏控制器使用SPI接口),調用PDDTouchPanelEnable()來創建“觸摸屏事件”,創建IST線程等。

      IST線程函數PDDTouchIST()中會有一個while循環,如下圖所示:

      循環中有一個WaitForSingleObject(,)函數。該函數有兩個參數,第一個參數是“觸摸屏事件”的句柄,第二個參數用來設置等待超時的時間。IST線程執行到這個函數會等待“觸摸屏事件”發生或者超時。當這兩種情況之一發生后,線程就會往下執行,并調用PDDTouchPanelGetPoint()函數來讀取觸點坐標。在“觸摸屏事件”發生之前,超時時間會設置為無限等待。只有當“觸摸屏事件”發生后(觸點按下)才會開始讀坐標,并判斷是否還是按下狀態,如果還是按下狀態,那么就會設置超時時間為某一個有限值,這樣當WaitForSingleObject等待時間超過這個值后又會去讀取坐標。這種機制就能保證我們能讀取到觸點移動的軌跡。

      當然要想使用“觸摸屏事件”,必須要有一個觸摸屏的中斷(當觸點按下,這個中斷發生),并將這個中斷和“觸摸屏事件”關聯起來,這樣中斷發生后,才會觸發“觸摸屏事件”。

      還有一種方法:不使用中斷,直接采用輪詢方式來讀取坐標,通過讀取坐標值的合法性來決定是否有觸點按下。這種方式下,WaitForSingleObject的第一個參數就不起作用,且第二個參數必須設為一個有限值,這個值就決定來輪詢的頻率。

    (審核編輯: 智匯張瑜)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 久久国产一区 | 亚洲 精品 综合 精品 自拍 | 国产成人在线播放 | 欧美日韩国产在线观看 | 在线中文字幕av | 亚洲成a人 | 精品一区二区三区四区五区 | 国产成人精品一区二区三区视频 | 欧美精品在线播放 | 成人在线| 中文字幕在线一区二区三区 | 91精品久久 | 日本高清精品 | 欧美午夜一区二区 | 国产精品久久av | 成人在线精品视频 | 免费福利电影 | 男女羞羞视频在线 | 成人在线视频免费观看 | 国产区在线观看 | 国产精品久久久精品 | 久久国 | av日韩一区 | 精品国产不卡一区二区三区 | 国产免费拔擦拔擦8x高清 | 欧美在线免费 | 蜜桃视频在线观看www社区 | 在线黄av| 国产精品无码专区在线观看 | 香蕉视频在线播放 | 日韩一区二区三区在线看 | 国产精品视频一区二区免费不卡 | 免费黄色毛片视频 | 一区二区三区回区在观看免费视频 | 国产一区免费在线观看 | 毛片一区二区 | 98久久久| 亚洲欧美视频在线 | 欧洲美女7788成人免费视频 | 成人免费视频网站在线观看 | 国产情侣自拍啪啪 |