<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2010-10-29 來(lái)源:網(wǎng)絡(luò ) 收藏

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

  鍵盤(pán)驅動(dòng)程序編制的要點(diǎn)有:

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

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

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

  (4)在read入口點(diǎn),也就是file_operations結構定義的read方法中,調用scan_kbd()。這樣,驅動(dòng)程序就可以定時(shí)掃描幾個(gè)I/O端口,獲取鍵值,然后通過(guò)putuser發(fā)送到用戶(hù)地址空間。

  設置I/O模式,讀/寫(xiě)I/0端口的位,可以通過(guò)頭文件S3C2410.h中專(zhuān)門(mén)定義的宏set_gpio_ctrl,write_gpio_bit,read_gpio_bit來(lái)進(jìn)行。

  鍵盤(pán)驅動(dòng)程序經(jīng)過(guò)編譯后,可以作為一個(gè)設備文件編譯入內核,也可以采取模塊動(dòng)態(tài)加載的方式。

  3.2 MiniGUl IAL引擎的實(shí)現

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

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

  在代碼實(shí)現上,通過(guò)INPUT數據結構來(lái)表示輸入引擎。該結構中指定了若干函數指針,編寫(xiě)特定的輸入引擎,主要就是編碼實(shí)現INPUT結構中的各個(gè)函數。新的IAL引擎編寫(xiě)完成后,應加入進(jìn)行配置,然后對MiniGUI進(jìn)行編譯。在工程實(shí)踐中,一種比較簡(jiǎn)便的方法是對MiniGUI已經(jīng)實(shí)現的引擎進(jìn)行修改。

  3.3 圖形界面

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


  MiniGUI中有三種窗口類(lèi)型:主窗口、對話(huà)框和控件窗口。每一個(gè)MiniGUI應用程序一般都要創(chuàng )建一個(gè)主窗口,作為應用程序的主界面或開(kāi)始界面。MiniGUI包含有許多控件類(lèi),如靜態(tài)框、按鈕、列表框、編輯框、進(jìn)度條等,這些控件類(lèi)可以實(shí)現和Windows標準控件類(lèi)似的效果。

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


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>