色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Windows CE設備小巧玲瓏 矩陣鍵盤開發(fā)大有乾坤

          Windows CE設備小巧玲瓏 矩陣鍵盤開發(fā)大有乾坤

          作者: 時間:2016-10-08 來源:網(wǎng)絡 收藏

          但因為矩陣鍵盤作為一種輸入設備與其他外圍設備有很大的區(qū)別,應用層不能對其發(fā)布命令來操作它。所以,一般流驅動接口函數(shù)中對設備進行操作的接口函數(shù)在矩陣鍵盤驅動中只是作了保留,并未有實質性的功能。其中,矩陣鍵盤接口函數(shù)中比較重要的有PWR_Init、PWR_DllEntry、KeypdPdd_GetEventEx、KeypdPdd_GetEventEx、ScanCodeToVKeyEx等。

          (3)矩陣鍵盤驅動加載過程

          Windows CE系統(tǒng)運行時會默認啟動DEVICE.EXE進程。DEVICE.EXE負責加載所有流驅動,進程對流驅動的加載是通過注冊表列舉器(RegEnum.dll)來實現(xiàn)。矩陣鍵盤的資源信息由OEM適配層(OAL)記錄在注冊表中,RegEnum.dll是通過掃描注冊表項 HKEYLOCALMACHINEDriversBuiltInPWRBUTTON下的鍵值對矩陣鍵盤進行初始化的。

          因此,WinCE輸入系統(tǒng)(GWES)會在啟動時裝載鍵盤驅動,輸入系統(tǒng)將從HKEY_LOCAL_MACHINEHardwareDeviceMapKEYBDDrivername注冊鍵中獲取矩陣鍵盤驅動動態(tài)鏈接庫(DLL)的名字。如果沒有找到入口函數(shù),系統(tǒng)將使用默認名字Keybddr.dll,然后加載這個DLL文件,并且確認所需要的條目指針是否都存在。然后,系統(tǒng)調用PFN_KEYBD_DRIVER_INITIALIZE 函數(shù)執(zhí)行初始化工作。這時,模型設備驅動程序(MDD)會在本地保存復制的一份輸入系統(tǒng)回調函數(shù)的副本以及初始化硬件和IST來處理中斷。

          當一個中斷信號來的時候,鍵盤驅動負責把硬件掃描碼轉換為虛擬鍵值,然后虛擬鍵值會再發(fā)送給輸入系統(tǒng)。輸入系統(tǒng)從隊列中取出按鍵事件,然后返回到驅動程序的函數(shù)KeybdDriverVKeyToUnicode中。驅動程序根據(jù)分析特定的鍵事件和虛擬鍵的狀態(tài)產生相應的字符。最后,輸入系統(tǒng)把虛擬鍵值和字符發(fā)送給合適的程序。

          例如,在我所用的CAYMAN開發(fā)板中,鍵盤驅動的動態(tài)鏈接庫名字為KeyPad.dll,入口點為DllMain,中斷服務線程(IST)的名字是m_hevInterrupt。這個線程調用函數(shù)InterruptInitialize注冊SYSINTR_KEYBOARD中斷,然后等待系統(tǒng)發(fā)出SYSINTR_KEYBOARD信號。系統(tǒng)在收到中斷信號后,中斷處理程序調用KeypdPdd_GetEventEx函數(shù)來獲取按鍵的掃描碼,然后再調用ScanCodeToVKeyEx函數(shù)將掃描碼映射成虛擬碼,把從PDD返回的鍵盤事件發(fā)送到輸入系統(tǒng),輸入系統(tǒng)進行排隊并分發(fā)給相應的應用程序。

          一般來說,對于Windows CE特殊布局的按鍵式矩陣鍵盤來說,使用流接口驅動模式能快速有效的進行開發(fā)。因為可以盡量使用微軟提供的樣板程序,只需修改相應的硬件相關代碼就能大大縮短開發(fā)流程,而且可以提高鍵盤驅動程序的可靠性。


          上一頁 1 2 下一頁

          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉