新聞中心

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

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

        作者: 時間:2016-10-08 來源:網絡 收藏

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

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

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

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

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

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

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


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 芜湖市| 曲松县| 宿州市| 沙雅县| 兴化市| 砚山县| 蓝田县| 锡林郭勒盟| 靖西县| 闽侯县| 渑池县| 宣武区| 五河县| 博罗县| 蓬溪县| 双江| 苗栗县| 西充县| 深州市| 邮箱| 靖远县| 新乐市| 宜都市| 奈曼旗| 页游| 蓬安县| 中阳县| 定结县| 梁山县| 特克斯县| 嘉义县| 徐汇区| 阳东县| 中西区| 集安市| 高青县| 南乐县| 夏津县| 弥渡县| 岚皋县| 古浪县|