1. 程式人生 > >嵌入式系統使用者介面設計之裸機介面開發(一)

嵌入式系統使用者介面設計之裸機介面開發(一)

裸機介面開發一般指在不借助於現成的GUI庫的情況下,構建整個應用系統的圖形(文字)使用者介面。通常一個完整的GUI庫都會提供諸如視窗(介面)管理,事件生成,派發等等。除此之外,其還有其固定的一個程式設計框架,通常這種框架因為GUI庫的不同略有差異,但到目前為止,基本大同小異。這些框架大都提供好了各種圖形液晶的驅動介面,按鍵/觸控式螢幕的介面以及其它事件介面。通常利用GUI框架完成設計工作,就是在這種框架下,處理各種訊息事件。可以說,利用GUI庫,使得介面的開發工作相對的變得容易些。

儘管GUI庫提供了一個程式設計的框架,使得我們從繁雜瑣碎的底層細節中脫離出來。但正如上面我們提及的,它僅僅只是是我們的工作變得相對容易些,而非輕而易舉。有如下幾個原因:

一是GUI庫大都比較龐大,對於FLASH 和RAM 以及執行速度等資源均有一定的需求。因此很多中低端的MCU就基本無福消受。二則商業的GUI庫大都售價不菲。最重要的一點是,介面邏輯的設計本來就是與具體的專案相關聯,而每個專案的需求各異,進而導致介面的設計從來都不是一件輕而易舉的事情,尤其是在要求系統介面可變性強的場合。

所以,很多場合下,我們不得不從零開始,設計整個介面的框架。也就是裸機介面開發。在這樣的情況下,使用的顯示裝置一般有如下幾種,字元型液晶,如1602 2002 2004 等等,圖形點陣液晶如12832 12864 19264 240128 320240等等。這些圖形點陣液晶,共同點就是單色,不需要顯示覆雜的圖形介面。當然,複雜的圖形介面在單色上面,表現出來的效果也不是很理想。通常,在這些顯示裝置上,適當的使用直線,矩形,圓角矩形,以及反白顯示,即可以實現不錯的人機互動介面。

因此,在這樣的圖形裝置環境下,使用視窗的方式來構建整個介面是不合適的。相反,直接以螢幕(Screen)的方式來設計整個介面系統是比較合適的。那麼,一個專案中的介面設計,就可以轉化為設計合適的單個Screen ,然後想辦法把這所有的單個Screen 連線起來,最終完成整個系統的介面開發工作。其實,Screen的方式在工控領域裡面是使用的非常多的。因為工控領域要求開發可靠快速,對於介面的設計工作,一般是使用HMI觸控式螢幕來實現。而HMI觸控式螢幕設計就是以一個個 畫面/螢幕 的方式來進行的。因為這種直接以畫面/螢幕的方式來構建系統,是非常符合人的直觀操作感受的。設想一下,如果你是一個設計者或者使用者,在操作帶有螢幕顯示的裝置時候,肯定是在一個個螢幕介面下面進行的,如在設定螢幕介面進行系統的設定,在控制螢幕介面進行相關的控制工作等等。因此,作為一個設計者來說,在設計這樣的系統的時候,務必要以面向螢幕的方式來思考整個使用者介面工作的構建。可能會有人嗤之以鼻,整個GUI庫裡面均是以視窗的方式來組織介面的,為啥到這裡就變成面向螢幕了呢。這是由於GUI庫一般使用的場合下均含有較多的資源,如螢幕解析度比較大,色彩位數高等等,且介面比較複雜,使用視窗的方式組織介面工作則較為方便。因此面向螢幕和麵向視窗是針對不同的應用場合來說的。通俗一點來說,面向螢幕適合低端的單色低解析度圖形裝置環境(工控上的HMI除外),面向視窗則適合高階彩色高解析度的圖形裝置環境。

迴歸到主題。既然我們要以面向螢幕的方式思考,那麼首先我們需要將系統需求整理出來,然後將其歸納到一個個具體的螢幕中去。如主介面具體需要顯示什麼內容,設定介面有多少個,分別設定的內容是什麼,控制介面有多少控制項等等。基本上只要系統需求明晰之後,系統需要的主介面,設定介面,控制介面內容等等均會隨之而出,剩下的就是如何在相應的介面上,使得介面的顯示看起來更具工業美感,操作上更加符合使用者的操作習慣。對於我個人而言,我喜歡在紙上畫出這些單個螢幕的內容,然後思考這些單個螢幕如何有效的連線在一起。然後用線連線這一個個螢幕。線上旁標註,是什麼原因導致顯示內容由當前螢幕跳轉到另一個螢幕。如在主介面下,有四項相關係統引數顯示,它們實時更新,以表徵系統正在執行的某些變數。在主介面下當按下設定按鍵的時候,螢幕就會切換到設定介面,顯示設定介面的相關內容。於是乎在主介面和設定介面之間的連線旁,我會標註螢幕跳轉事件為設定按鍵按下。這樣,當所有螢幕之間跳轉的關係確定好之後,基本上介面主體設計就完成了。如果你設計的最終介面,如同蜘蛛網一樣混亂,各個螢幕之間均有聯絡,那麼肯定你的設計是有問題的。好的設計應該是介面之間的跳轉關係非常清晰,非常有層次感的。如果你沒有達到此要求,試著重新組織你螢幕的內容,讓每個螢幕所完成的工作,相對而言,具有一個整體性,這樣經過多次重構之後,你的螢幕看起來一定非常有條理和層次感。就如同我們程式設計一樣,為了追求結構上的優美,低耦合,高內聚的特性,總是需要對整個系統進行不斷的抽象,重構,最終實現目標。當一個個螢幕設計出來之後,連線跳轉關係也明確了之後,似乎一切都看起來輕鬆美好。是的,沒錯,但是有個前提,除非你接著看完本文後面的內容,否則,直到此處,一切還只是看起來美,鏡中花水中月一般。好的建築除了要優秀的設計圖紙之外,還需要優秀的磚瓦匠去一磚一瓦堆砌。下面的內容,我們就來讓每一個螢幕變得有血有肉,變得生動起來。