面向?qū)ο蟮慕缑婢幊?嵌入式微系統(tǒng)連載之九
msOS采用128*64的字庫(kù)黑白屏,降低硬件設(shè)計(jì)復(fù)雜度,這個(gè)屏一行可以顯示8個(gè)漢字或者16個(gè)字母,總共4行。界面開發(fā)基于http://2s4d.com/article/263244.htm
上圖為工作頁(yè)面,由一張背景文字(BackText),兩個(gè)文本(TextBox)和五個(gè)標(biāo)簽(Label)組成。背景文字用于顯示固定的說(shuō)明文字,比如頻率、功率等,這些文字在這個(gè)頁(yè)面下是固定不能變化的。標(biāo)簽控件用于顯示變量值,可以是字符串也可以是數(shù)字。文本控件具有標(biāo)簽的功能外,還可以通過(guò)按鍵等修改變量值。以上三種控件構(gòu)成了最常用的頁(yè)面。
接觸過(guò)PC機(jī)編程的,對(duì)于控件概念是非常容易接受的,若沒有接觸過(guò),可以通過(guò)msOS配套的硬件開發(fā)平臺(tái)msPLC Demo了解界面編程,這樣會(huì)相對(duì)容易很多,此外也可以接觸一下C#編程,從跟msOS配套的msMenu源碼入手,這個(gè)msMenu源碼比較簡(jiǎn)單,在PC機(jī)上用C#虛擬了128*64的黑白字庫(kù)屏。有了msMenu,各類STM32F103的開發(fā)板都可以運(yùn)行msOS,通過(guò)串口跟PC機(jī)通訊,在msMenu上顯示,不需要硬件LCD屏,方便大家學(xué)習(xí)。msMenu的兩個(gè)主顯示區(qū),就是由兩個(gè)大的TextBox組成。
下圖為msMenu
BackTextPointer:背景文字控件加載點(diǎn),是一個(gè)16*4字節(jié)的數(shù)組,作為頁(yè)面背景。
ChartPointer:圖表控件加載點(diǎn),高頻機(jī)項(xiàng)目中用到,是一個(gè)特殊控件,一般項(xiàng)目用不到。
LabelPointer:標(biāo)簽控件加載點(diǎn),一個(gè)Form可以支持多個(gè)Label,需要支持多控件級(jí)聯(lián)。
TextBoxPointer:文本控件加載點(diǎn),一個(gè)Form可以支持多個(gè)TextBox,需要支持多控件級(jí)聯(lián)。
FocusTextBoxDataPointer:文本控件操作選擇,設(shè)定焦點(diǎn)用于選擇那個(gè)文本控件用于輸入。
設(shè)計(jì)程序的時(shí)候,第一步要建立頁(yè)面Form,如下圖:
第二步,定義各種控件和資源。
第三步,各個(gè)頁(yè)面加載控件,初始化控件參數(shù),關(guān)聯(lián)業(yè)務(wù)邏輯數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
第四步,執(zhí)行MenuTask解析當(dāng)前頁(yè)面
msOS采用的菜單界面,非常簡(jiǎn)單,是一個(gè)架構(gòu)性的菜單界面,很適合用戶看懂之后,自己修改、增刪,也可以應(yīng)用于彩屏。菜單界面的細(xì)節(jié)部分,請(qǐng)參考源碼。
評(píng)論