Posted on 2009-12-19 22:02
~William~ 閱讀(656)
評論(0) 編輯 收藏 引用 所屬分類:
MTK_MMI
摘要:采用面向對象的程序設計技術用C語言開發窗口結構的GSM手機MMI(人機接口)軟件,程序結構清晰,代碼效率高,模塊可再用性好。本文粗淺地談了GW手機MMI軟件開發的功能模塊組織、窗口管理等技術,并以快捷功能為例,說明具體功能的實現方法。
關鍵詞:人機接口(MMI) 功能模塊組織 窗口管理
GSM手機是直接為移動用戶服務的移動通信終端。其組成一般包括4個部分:射頻單元、基帶單元、人機接口(Man Machine Interface,縮寫MMI)和軟件。
1 MMI的功能及對軟件的要求
MMI是進行移動通信的人與提供移動通信服務的手機之間交往的界面。它包括硬件和軟件:硬件有鍵盤、顯示器、話筒、耳機和SIM卡等;軟件有基本人機界面功能、用戶SIM卡功能、公眾移動網功能、菜單與電話本功能等。
MMI主要有以下功能:
(1)輸入用戶操作信息。
(2)以聲、光、振動等手段顯示手機及網絡的狀態、輸出操作結果。
(3)實現GSM相關協議,如DRAFT pr ETS 300 906珍動臺特性,ETS300 907移動臺MMI等標準對MMI的各項要求。
(4)提供合理、方便的操作方法。
(5)對眾多的功能進行分類、組織,以方便用戶使用。
(6)增加計算器等附加功能,提高手機的實用性。
(7)加入動畫、圖標、問候語等修飾功能,使產品界面美觀、友好。
為了滿足上述功能,對MMI軟件的開發工作提出了以下相關要求:
(1)充分消化GSM協議,完整地實現協議要求的各項基本功能。
(2)軟件工作穩定可靠,與底層軟件接口方便,以保證整機的性能。
(3)選用代碼效率高,表達能力強,可移植性好的編程語言,以便提高產品的性能價格比,降低開發成本。
(4)根據GSM手機界面的具體情況,充分利用LCD顯示器的表達能力,借鑒、采用最新的軟件開發技術,運用圖形、動畫及漢化界面、漢字功能,美化產品、方便使用。
(5)精心組織程序結構,使軟件結構清晰,各模塊獨立性強,可擴充性、可封裝性好,便于開發小組分工合作以及各階段開發成果的充分利用,達到縮短產品開發周期、豐富產品功能的目的。
(6)發揮創造性,開發特色功能、實用功能,提高產品吸引力。
2 MMI軟件功能模擬的組織結構
GSM手機的MMI軟件有一個主程序,主要作用是建立消息循環,負責分發消息。當收到來自底層的開機消息時,MMI層軟件進行初始化,并創建基本窗口。
窗口(window)是一個術語,它可以接收消息,可能在顯示屏上有一個對應的顯示區域,也可以沒有。字符顯示區,編輯域,或者既有字符顯示區又有編輯域的對話窗口都是窗口的例子。
基本窗口是MMI層所有窗口的"根",其它窗口都是這個窗口的子窗口。到達MMI層的GSM消息,其它窗口不處理時,都送到基本窗口中作缺省處理。在基本窗口中,根據不同情況,進行狀態轉換,分別創建等待關機、充電、等待插入SIM卡、等待輸入PIN、等待SIM卡解鎖等子窗口,處理開機及關機過程中的各項工作。順利完成各項開機工作后,轉人待機狀態,創建待機窗口。如果因接聽來電或撥打電話進入通話狀態,則取消待機窗口,創建通話窗口。
待機窗口可以完成撥號、啟動快捷功能等工作,也可以進一步創建電話本、功能菜單等子窗口。
菜單窗口可以派生一系列子菜單窗口,形成一棵菜單樹。這棵菜單村把手機的眾多功能有機地組織在一起。各個菜單窗口都是菜單窗口類的實例,菜單的選擇、顯示等功能都在菜單類中完成。
3 MMI軟件的核心結構--窗口管理
根據GSM手機MMI軟件開發的具體情況,采用面向對象的程序設計技術,用C語言以窗口方式和消息驅動機制來組織軟件結構,可以滿足對MMI軟件開發工作的各項要求。在這個技術方案中,窗口管理是整個MMI軟件的核心結構。
窗口管理為對話窗口、菜單、編輯及其它用戶輸入輸出操作提供了一個基本框架,為消息處理提供了基本手段。由于使用了面向對象的程序設計方法,MMI軟件采用消息驅動機制。窗口管理收集所有的輸人信息,然后把這些輸入信息以消息的形式送往合適的窗口。這些消息的執行結果又可能產生新的消息,新消息的傳送仍由窗口管理負責。窗口管理通過調用窗口函數,向窗口函數傳遞消息參數,把消息送到目的窗口。
窗口函數是其所屬窗口在窗口管理中注冊的系統函數,是窗口最重要的屬性。窗口管理調用窗口函數對窗口進行操作,處理窗口接收到的所有消息。窗口函數對消息的處理方法確定了窗口的表現和行為特征。 窗口管理調用標準的窗口函數,自動處理窗口的許多特性,應用程序只要負責創建窗口、處理窗口產生的高級事件及窗口的異常情況。在這個環境中,用戶可以對GSM消息作處理,也可以讓系統對GSM消息作缺省處理。窗口管理把來自鍵盤和軟件中其它實體的消息送到具有當前焦點的窗口。在軟件的整個運行過程中,總存在一個具有焦點的窗口,它負責處理輸人消息,或者把消息沿著從子窗口到父窗口方向遞送的傳遞鏈送到一個可以處理該消息的窗口。
MMI層主要有兩類輸入消息:它們是來自系統其它部分的鍵盤事件消息和GSM協議棧消息。窗口消息按一定的規則選擇傳遞路徑。鍵盤消息是由按鍵的按下和釋放產生的,被送往具有焦點的窗口。鍵盤消息最多只能傳到父窗口,不能再往上傳送。GSM協議棧消息可以從子窗口到父窗口按窗口層次結構一直傳遞,直到有一個窗口接受這條消息為止。
窗口管理也提供了一種使消息直達某一窗口的機制,使消息可以直接送往請求這個消息的窗口。這個方法在某條消息只有一個特定的窗口感興趣的情況下非常有用。
MMI層內部產生的消息,一般不按窗口層次結構由于窗口向父窗口傳送。如果要把該類消息從子窗口向父窗口傳送,子窗口要負責這項工作。未處理的消息如何傳送,由缺省的消息處理函數負責。 系統提供了一些窗口類。如文本類,用于顯示固定字符;菜單類,用于菜單的顯示和處理;編輯類,用于字符的編輯等。應用程序可以向窗口管理注冊新的窗口類。
窗口類實現了許多窗口的共同特性。向窗口管理注冊后的窗口類,可以生成窗口實例,很方便地為許多窗口再用。例如,菜單窗口的工作方式相同,只有當菜單窗口的一個菜單項被選定時,才需要一段特定的程序來處理這特定的選擇。菜單類窗口的每個實例在選定特定的菜單項前的窗口管理都可以用窗口類中的同一段程序管理。這里強調一下,只有向窗口管理注冊了的窗口類,才能生成窗口實例。 窗口實例繼承了窗口類的特性,也可以增加自己的特性,還可以通過重載消息處理函數改變從窗口類繼承來的特性。生成窗口實例時,要把窗口類名、窗口名、窗口識別號、窗口函數名、窗口位置數據、父窗口、窗口風格、窗口狀態、窗口鍵盤和窗口私有數據等參數送往窗口管理。
為了方便,預先定義了一些通用的對話窗口生成函數。如通知消息對話窗口,可以顯示通知信息;開/關選擇對話窗口,可以用于類似"開"或"關"等開關量的選擇;PIN輸入對話窗口,可以用于輸入PIN碼等等。
窗口消息在窗口函數中處理。窗口消息送往一個窗口時,實際上是送往這個窗口的窗口函數。每個窗口類都必須有一個窗口函數。在窗口實例中不處理的消息一般用缺省消息處理函數自動送往該窗口的窗口類的窗口函數中處理。某些在窗口類中不處理的消息,如GSM事件消息,則沿著從子窗口到父窗口方向遞送的傳遞鏈自動送往父窗口處理。對話窗口的子窗口可能會有一個子類窗口過程,這時窗口消息首先送往具有焦點的子窗口,如在待機窗口中,數字鍵消息首先送往電話號碼編輯子窗口的窗口函數中處理。
下面以快捷功能為例,說明如何實現具體功能。
4 快捷功能及其實現
菜單一般按功能分類編排,有時常用的功能安排在較深的菜單下面,使用時常感不便。為了方便用戶訪問常用功能,許多手機都有快捷功能。幾種不同方法都可以實現快速訪問菜單項的目的。
4.1功能編號法
給每個菜單項一個功能編號,在主菜單下鍵入這個編號,就可以進入這項菜單。例如主菜單第五項一子菜單第四項一下一級子菜單第一項的功能編號為5-4-1。只要在主菜單下鍵人5、4、1,就可以進入這項功能。
每項菜單在其所屬窗口中都有一個編號。這種方法其實是每次按下數字鍵時,選中當前窗口中該數字鍵所代表的菜單項,逐級進入,直至調出所需的功能。這項功能可以在菜單類中實現,這樣,任何菜單窗口就都有用數字鍵選擇菜單項的功能。只要在菜單類的窗口函數中,加人數字鍵鍵盤消息的處理代碼就可以實現這項功能。
4.2快捷菜單法
在主菜單下增加一個子菜單,把原來分布在各級子菜單下的常用功能收集到這個子菜單中,就組成一個快捷菜單。這些功能除了可以在各級子菜單中找到,也可以從快捷菜單直接進入。快捷菜單的處理方法與普通菜單一樣。
快捷菜單本身也可以設計成用快捷鍵進入,其實現方法參看下面的快捷鍵法。
4.3快捷鍵法
快捷鍵法一般是設法利用鍵盤上的某些鍵進入快捷功能。由于鍵的用途很多,必須滿足一定的條件才能進入快捷功能。比如在待機狀態下,連續按住某個鍵約2秒進入快捷功能。快捷鍵功能一般在待機窗口中實現,基本方法如下:
1)在待機窗口的電話號碼編輯子窗口中,當收到有鍵壓下的消息時,啟動按鍵計時器;當收到按鍵釋放的消息時,按鍵計時器停止工作。
2)按鍵計時器利用每秒一次到達待機窗口的定時器消息進行計時。
3)按鍵時間超過2秒時,調用按鍵所代表的功能的實現函數,啟動快捷功能。
5 結束語
GSM手機MMI軟件的開發是一項復雜的軟件工程。采用面向對象的程序設計技術用C語言開發窗口結構的MMI軟件,程序結構清晰,代碼效率高,模塊可再用性好,便于增加產品功能,便于開發小組編程時分工合作。