• 沒有找到結果。

個人電腦帄台上之 MIS 模擬設計與實作

4〃1 MIS 模擬器設計

模擬器的設計目的在於個人電腦缺乏一支真實的手機,在操作介面編輯器時 能夠輔助使用者,順利模擬出真實畫面。在我們的模擬器中主要包含了三個部 份:Module 及 Engine 與 EventHandler;如同一般市面上的模擬器,一個模擬器 的設計可以區分成三個階段:裝置的模組,畫面的呈現,事件的輸入,以下說明 MIS 中各部份與這三個階段的相關性。

Module 簡單的來說即代表不同款示的模擬器,MIS 中最重要的即是一個虛 擬的行動裝置,Module 中可以發展出各式的模擬器裝置,這可利用下一節介紹 的 MobileCreator 製造。

Engine 負責的是將 MIES 產生出的以 MIDL 為基礎的 XML Files 解析,修改 一個應用程式的元件介面。由於我們的系統將元件開放給使用者與應用程式者,

而當應用程式設計者開發出新的應用程式發佈後,使用者可以在編輯器引用應用 程式,並開始編輯應用程式開放的元件介面,當編輯出此應用程式的介面描述檔 案後,透過 Engine 會讀取檔案,並動態建構這個介面的主體,即應用程式,而 後剖析檔案中定義的結構,動態修改其中的介面元件,最後顯示畫面在裝置模組 的螢幕上;進一步地,我們在動態鏈結上作到了陣列的動態宣告大小,不同於以 往程式所規定的,陣列大小必頇在一開始宣告時就給定大小,而是在 Engine 進 行 Parse 時動態決定大小。

比如說,在待機狀態時,我們不知道使用者需要幾個 MobileLabel,而在 Idle 應用程式設計時我們只頇宣告一個 MobileLabel 陣列,但不頇宣告其大小,當使

用者在 MIES 編輯 Idle 這個應用程式介面時,可以自行決定需要的大小,並寫入 XML 檔案中。在經過 Engine 編譯後,Idle 應用程式的 MobileLabel 陣列此時才 真正有其大小;如此作到動態的效果,不僅能讓使用者編輯多了相當大的彈性,

應用程式開發者亦不需要因為宣告過大或過小的空間而造成資料浪費或陣列不 足。

EventHandler 處理的是裝置模組上的輸入,即 Module,由於 Module 的輸入 事件處理是定義在自身模組的程序中,MIS 是作為 Engine 與 EventHandler 的中 間溝通者,當裝置模組由外接受輸入時,會引動內部事件處理,但執行什麼事件 卻是 Application 所設計決定的;所以 EventHandler 所需要處理的即是將 Engine 編譯過後中的產生的 Application 中元件對應的事件指定給 Module 中的事件模 組,如此一來才來正確的輸入,並執行對應事件。 MIDL Files

Input

Output

4〃2 MSC 行動模擬創造器

考量到使用者所使用的行動裝置款示與內建模擬器不同而影響到外觀與按 鍵的操作不便,我們建立了一個可以讓使用者創造出屬於自己的模擬器的簡易編 輯器(MSC)。MSC 可以讓使用者製作出個人化的行動裝置模擬器,即 MIS 中的 Module 延伸類別,包括此裝置的資訊,外觀,螢幕與按鍵位置等,這些資訊都 是一小段程式碼,但當使用者在創造時卻並不會覺得自己在寫程式,加上使用動 態編譯,可將圖片與程式碼嵌入轉換成一個 dll 檔,作到了防止資源外洩的目的。

在 MSC 中,我們運用了 csc.exe 這個.Net Framework 內建 Compiler;在使用者創 造後一款行動裝置模擬器後,會產生一個對應的 cs 程式碼檔案,並且呼叫 csc.exe 將此程式碼檔案與圖片編譯為 dll 檔案,以讓 MIS 引用。

圖 15:MSC 設計 Simulator 時截圖

相關文件