新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Linux和MiniGUI的某型指控終端人機接口設計

        基于Linux和MiniGUI的某型指控終端人機接口設計

        作者: 時間:2010-10-29 來源:網絡 收藏

          在系統內部,I/0設備的存取是通過一系列的入口點來進行的,字符型設備提供以下入口點:open,close,read,write,ioctl;它們分別對應打開設備、關閉設備、讀設備、寫設備以及其他操作。這些入口點的定義是通過一個重要的數據結構file_operations來完成的。

          鍵盤驅動程序編制的要點有:

          (1)定義一個*的健值矩陣,作為輸出,按下一個按鍵,得到對應的鍵值;

          (2)初始化時設置所用到的I/O端口的讀/寫模式,行線為寫,列線為讀;

          (3)定義鍵盤掃描函數scan_kbd()。它的算法是:初始化時所有的行線置低電平,如果沒有鍵按下,列線都將讀到高電平。否則,任何鍵的閉合將造成該列成為低電平。

          (4)在read入口點,也就是file_operations結構定義的read方法中,調用scan_kbd()。這樣,驅動程序就可以定時掃描幾個I/O端口,獲取鍵值,然后通過putuser發送到用戶地址空間。

          設置I/O模式,讀/寫I/0端口的位,可以通過頭文件S3C2410.h中專門定義的宏set_gpio_ctrl,write_gpio_bit,read_gpio_bit來進行。

          鍵盤驅動程序經過編譯后,可以作為一個設備文件編譯入內核,也可以采取模塊動態加載的方式。

          3.2 MiniGUl IAL引擎的實現

          通常,在使用前應針對目標系統的特點進行配置和編譯,例如指定目標操作系統、運行模式、圖形引擎和輸入引擎、字體類型、字符集、所支持的控件類等。該課題中,因為采取了自行的鍵盤作為輸入設備,因此最重要的配置是輸入引擎(input abstract lay-er,IAL)。

          抽象層是一組不依賴于硬件的抽象,其作用類似于操作系統的驅動程序,將底層的硬件操作與操作系統隔離,這樣做簡化了在不同平臺上移植的難度。開發特定的鍵盤輸入,主要是完成兩部分工作:鍵盤驅動程序和鍵盤輸入引擎開發。前者負責從鍵盤接收原始輸入事件和數據,后者負責將原始的輸入事件和數據轉換成MiniGUl抽象的鍵盤事件和數據。

          在代碼實現上,通過INPUT數據結構來表示輸入引擎。該結構中指定了若干函數指針,編寫特定的輸入引擎,主要就是編碼實現INPUT結構中的各個函數。新的IAL引擎編寫完成后,應加入進行配置,然后對MiniGUI進行編譯。在工程實踐中,一種比較簡便的方法是對MiniGUI已經實現的引擎進行修改。

          3.3 圖形界面

          MiniGUI是一個圖形用戶界面支持系統,通常的GUI編程概念均適用于MiniGUI編程,如窗口和事件驅動編程等。嵌入式系統完成的功能一般比較單一,對于該系統而言,重點在于實現部分,因此只需要輪詢用戶的按鍵輸入即可。如圖2所示。


          MiniGUI中有三種窗口類型:主窗口、對話框和控件窗口。每一個MiniGUI應用程序一般都要創建一個主窗口,作為應用程序的主界面或開始界面。MiniGUI包含有許多控件類,如靜態框、按鈕、列表框、編輯框、進度條等,這些控件類可以實現和Windows標準控件類似的效果。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黔西| 登封市| 衢州市| 溆浦县| 南宁市| 明溪县| 建水县| 昌邑市| 桐梓县| 高阳县| 苍南县| 沁阳市| 嵩明县| 巴青县| 兰州市| 博乐市| 六盘水市| 涞水县| 锡林浩特市| 南城县| 芦溪县| 扬中市| 苍南县| 高雄县| 雷山县| 姜堰市| 新平| 衡阳县| 阳城县| 普定县| 华安县| 城市| 谷城县| 玛纳斯县| 博乐市| 凌源市| 克东县| 岳阳县| 茶陵县| 弥勒县| 和静县|