• 沒有找到結果。

可延伸式人機介面系統

在文檔中 XMMI-可延伸式人機介面系統 (頁 24-35)

3.1 前言

人機介面(Man Machine Interface, MMI),不管在任何設備上,都佔有極重 要的地位。MMI 所包含的範疇很廣,不只是使用者圖形化介面(Graphical User Interface, GUI)而已,更包含了硬體的按鍵、語音輸入、提示鈴聲、…等。MMI 負責與使用者的溝通,包括將機器的狀態回報給使用者,也處理使用者欲執行的 命令。

行動電話的功能越來越多,使得 MMI 的設計越趨複雜。目前 MMI 的 GUI 部份是採用類似設計視窗程式的方式,將有可能出現的視窗準備好,讓應用程式 的設計者使用。現今的 MMI 架構,行動電話的設計廠商需要不斷的開發新的使 用者介面,以應付不同的使用者需求,而這些工作通常是需要大量的時間及人 力。在使用者方面,也難以對介面做個人化的修改。

在本篇論文中,我們提出了一個新的嵌入式系統 MMI 架構,我們稱之為可 延伸式人機介面系統(eXtensible Man Machine Interface system, XMMI)。採用 XMMI 架構的介面設計,能縮短介面在設計開發階段所耗費的時間及人力,也能 讓使用者依照個人對介面及操作方式,做個人化的修改。由於開發 XMMI 的架 構,許多原始行動電話中的應用程式需要重新設計,因此,我們在個人電腦上開 發一個模擬 XMMI 運作的行動電話架構,實作平台為 Microsoft .NET;程式語言 使用 Visual C#。

3.2 XMMI 設計概念 驅動。我們能將行動電話的行為想像成是一個狀態機(state machine),每一個狀 態下,繪製相關資訊至螢幕之後,等待事件,準備將狀態改變至另一個狀態點。 嵌入式系統使用者介面解譯器(Embedded User Interface Interpreter, EUII)、嵌入 式系統使用者介面的描述語言(Embedded User Interface Description, EUID)、特 定功能應用程式(Specific applications)、一般應用程式(General applications)及 圖形化介面應用程式介面(GUI APIs)這五層。至於使用者介面層(UI Layer)、

框架(Framework)及作業系統及驅動程式(Hardware drivers and RTOS)這三層

與傳統 MMI 架構的功能相仿,將在第四章做說明。

圖3-1 XMMI 架構

3.3.1 嵌入式系統使用者介面的描述語言(EUID)

在 XMMI 的架構下,我們將行動電話的螢幕當成是一個繪圖區,將需要呈 現的資訊,繪製到螢幕上。EUID 的其中一部份是描述畫面所需要呈現的圖形、

文字、…等資訊;另一部份則是描述在該畫面下,受不同事件觸發後,行動電話 進入不同的視窗畫面。

以狀態機的角度來看,圖3-2中的 EUID 1、EUID 2 及 EUID 3 分別代表了 行動電話中的三個不同的狀態。假設行動的待機畫面是 EUID 1,則 EUID 1 中的 畫面 1 描述了行動電話在待機狀態螢幕所呈現的資訊,我們採用類似 SVG 的描 述方式達成;事件 1 的部份則是描述在待機狀態下對事件發生時,所需要做的 相對反應。例如,在待機畫面會出現的訊號強度圖示、電池強度圖示、…等,描 述在畫面 1 的部份,當行動電話待機狀態下,我們按下電話鍵盤上的左功能鍵 時,要進入的是主選單畫面,按下左功能鍵的事件反應,是描述在事件 1 的部

份。我們設計的 EUID 不僅描述了畫面的呈現,也描述整個系統的運作流程。

圖3-2 行動電話狀態

3.3.2 嵌入式系統使用者介面解譯器(EUII)

EUII 的核心部份是 XML 的剖析器,其設計是針對 EUID 的描述作對應的解 讀,將畫面實際繪製到行動電話的螢幕上。EUII 能掌握所有行動電話上的事件 及狀態(status)。以圖3-2的例子做說明,EUII 解讀待機畫面的 EUID 1 會依據 行動電話的狀態畫出指定的畫面。當畫面繪製完成後,EUII 便等待事件發生,

假設這個時候訊號強度減弱一格,則 EUII 會重畫螢幕上有關訊號強度的圖示,

當使用者按下左功能鍵時,EUII 便尋找 EUID 中有關左功能鍵的描述,而對行 動電話畫面做相對的改變,如果這時候按下左功能鍵是進入主選單畫面的話,則 EUII 會載入描述主選單畫面的 EUID,再依 EUID 的描述,繪出主選單畫面。

從 EUII 及 EUID 開發介面的功能來看,EUII 實際執行行動電話的螢幕繪製,

及功能執行;而所有 EUII 的運作,是來自 EUID 的描述。因此,我們只要改變

EUID 的描述,行動電話的畫面及操作方式,便會變的截然不同。

3.3.3 特定功能應用程式(Specific applications)

嵌入式系統通常都會有一些特定的功能,行動電話的特定功能有電話簿、簡 訊發送、撥打電話、…等。在傳統的 MMI 架構,這些特定的應用也是以類似視 窗程式的方式撰寫,如此一來功能性的動作便與呈現方式難以分開。在 XMMI 的架構中,這些特定的功能,我們將它的資料或執行後的結果,存放在一段固定 的記憶體結構中,在需要呈現至螢幕上時,由 EUII 從記憶體中取出資料,配合 EUID 所描述的呈現方式,再將資料顯示在行動電話螢幕上。

圖3-3 特定應用程式運作流程

圖3-3說明了特定應用程式的運作流程。圖左下角待機畫面 EUID 描述了 行動電話按下左鍵的行為是進入通話清單的展示畫面,EUII 首先會執行通話清 單的應用程式,通話清單應用程式將手機的通話清單填入一段固定的記憶體裡之 後,EUII 才將描述通話清單的 EUID 載入並展示於行動電話螢幕。這個作法,

有關通話清單的展示方式,就能從功能性的程式碼中分離出來,轉而寫在 EUID 檔案中。

3.3.4 一般應用程式及圖形化介面應用程式介面

行動電話的功能越來越多樣化,有些功能需要能直接在螢幕上呈現,例如:

照相機、攝影機、Java 遊戲、…功能。這些應用程式,我們將它歸類為一般應 用程式。這些程式的開發可以直接使用圖形化介面應用程式介面(GUI APIs)所 提供的 GUI 元件,不過關於一般應用程式的執行時機,仍是定義在 EUID 中。

由於行動電話的所有畫面已交由 EUID 描述達成,在 XMMI 架構與傳統 MMI 架構下最大的不同在於 XMMI 架構下的 GUI APIs,所提供的 GUI 元件並不需要 包含視窗畫面的 APIs,只需要提供如按鈕(button)、捲動軸(scroll bar)、浮動 視窗、…等元件。

3.4 XMMI 模擬器

要實現 XMMI 的架構,我們在3.3.3節所提出的特定應用程式(Specific applications)必需要重寫,然而 XMMI 的設計重點是在於 EUII 及 EUID。為了 快速對 EUID 配合 EUII 的方式做實驗,我們在 PC 上實作了一個行動電話採用 XMMI 架構的模擬程式,藉此也定義出 EUID 的雛形。

本篇論文主要探討的部份在於 XMMI 架構使用程式語言實現的可行性,尚 未考慮有關嵌入式系統的記憶體限制、及行其運算能力。XMMI 的模擬器架構如 圖3-4,與圖3-1所不一樣的地方只有底層作業系統、應用程式介面(APIs)

及框架層(Framework),這部份我們使用 Microsoft .NET 搭配 GDI+ 繪圖函式

庫,程式語言使用 Visual C#。上層的 EUII 及特定應用程式(Specific applications)

在設計完成後,若要在實際的行動電話上實現,只需要配合硬體平台的需求以適 當程式語言改寫,而 EUID 可以直接使用。

圖3-4 XMMI 模擬器

3.4.1 設計 EUID

EUID 在 XMMI 的架構中扮演了描述行動電話狀態機的重要角色,EUID 採 用符合 XML 規範的語法設計。如圖3-5為 EUID 的樹狀圖,根結點為<euid>,

根元素的兩個子結點為<this>及<next>。<this>的子結點是描述行動電話現態的螢 幕上所需要呈現的畫面;而<next>的子結點主要是定義行動電話在現態受事件觸 發後,所需要做的相對反應。在圖中我們發現不論在<this>或<next>的子結點中 都會出現<animation>、<image>、…等葉子(leaves)結點,這些結點的功能主 要是描述繪圖的動作,我們主要是參考 SVG 向量繪圖的描述方法實作。

以行動電話待機畫面的例子說明,在待機畫面下的背景圖及一般圖示,就定 義 leaves 1 裡,而訊號強度資訊,則是由<status>的描述配合行動電話實際收訊 的狀況,繪製 leaves 2 所定義的圖形。

圖3-5 EUID 樹狀圖

3.4.2 設計 EUII 及 XMMI 的運作流程

EUII 中的 XML 剖析器,我們採用 Microsoft .NET 所提供的 XmlDocument 類別實作,XmlDocument 類別是一個 XML DOM 剖析器。EUII 的設計,就是為 了對 EUID 做相對應的解讀,當我們增加新的 EUID 標籤,我們也要在 EUII 加 入解讀該標籤程式碼。

圖3-6為 XMMI 運作的流程圖,在載入 EUID 後,EUII 首先依據 EUID 裡 的<this>區塊定義,繪製相關的訊息及圖示到行動電話的螢幕上,完成螢幕的繪 製後,EUII 進入傾聽事件廻圈,當觸發事件發生,EUII 到 EUID 的<next>區塊 中,尋找對應事件的處理方式。事件的發生有兩種可能,一種是不改變行動電話 的現態,我們不需要載入一個新的 EUID,對畫面的改變仍是描述在現態的<this>

區塊中,例如收訊強度的改變;另一種是讓行動電話進入另一個狀態的事件,這 種事件發生時,EUII 會載入代表行動電話另一個狀態的 EUID,再重新對被載入 的 EUID 做螢幕繪製,例如按下行動電話的右功能鍵進入主選單畫面。

圖3-6 XMMI 運作流程圖

3.5 行動電話模擬器

圖3-7為行動電話模擬器以 XMMI 架構實作,展示待機畫面的情形,這個 待機畫面的 EUID 為圖3-8的 XML 檔案片段。EUID 中描述的<image>代表目 前的桌布圖案,<m_text>其中的 source 屬性值為 network_name,表示這個字串 的來源是行動電話記憶體中的系統商名稱,EUII 解讀後,會呼叫特定應用程式

(specific applications),依照行動電話設定的語言模式,將系統商的名稱填入記 憶體,而<m_text>的其他屬性就是描述有關系統商名稱字型的呈現,這樣的做法 就能把呈現方式分開。<this>區塊中還包一有<status>標籤,其中的 type 屬性值 為 message,代表當行動電話有未讀訊息的時候,需要展示什麼樣的資訊在螢幕 上,在這個例子中,當有未讀訊息的時候,會秀出一張 message.png 的圖片在螢 幕上。在<next>區塊中的<right_function_key_up>標籤,代表當行動電話在收到

(specific applications),依照行動電話設定的語言模式,將系統商的名稱填入記 憶體,而<m_text>的其他屬性就是描述有關系統商名稱字型的呈現,這樣的做法 就能把呈現方式分開。<this>區塊中還包一有<status>標籤,其中的 type 屬性值 為 message,代表當行動電話有未讀訊息的時候,需要展示什麼樣的資訊在螢幕 上,在這個例子中,當有未讀訊息的時候,會秀出一張 message.png 的圖片在螢 幕上。在<next>區塊中的<right_function_key_up>標籤,代表當行動電話在收到

在文檔中 XMMI-可延伸式人機介面系統 (頁 24-35)

相關文件