新聞中心

EEPW首頁 > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 平板電視OSD的結(jié)構(gòu)化界面設(shè)計(jì)

平板電視OSD的結(jié)構(gòu)化界面設(shè)計(jì)

作者: 時(shí)間:2012-06-10 來源:網(wǎng)絡(luò) 收藏

UI開發(fā)工具界面。

本文引用地址:http://www.butianyuan.cn/article/167910.htm

  這樣的結(jié)構(gòu)是為了描述一個(gè)物件的基本屬性及規(guī)定其對(duì)于動(dòng)作的相應(yīng)表現(xiàn)。利用這樣的結(jié)構(gòu)將場景中的每個(gè)物件描述清楚,則一個(gè)特定UI場景的內(nèi)容就可以被確定,而同時(shí)被確定的還有其上一個(gè)場景、下一個(gè)場景及動(dòng)作響應(yīng)特性等所有UI特性。這樣的信息構(gòu)成一個(gè)數(shù)組,由一個(gè)統(tǒng)一的“解釋平臺(tái)”對(duì)其進(jìn)行翻譯和描述,從而將整個(gè)UI構(gòu)造完成。

  這有點(diǎn)類似解釋語言,而我們所需要做的就是編寫這些“腳本”,對(duì)物件進(jìn)行“繪制”的工作由“解釋”平臺(tái)去調(diào)用外部的OSD發(fā)生器的驅(qū)動(dòng)代碼來完成。當(dāng)需要改變OSD發(fā)生器或基于不同平面顯示控制器平臺(tái)時(shí),只需要更新少量OSD部分驅(qū)動(dòng)代碼,從而實(shí)現(xiàn)UI系統(tǒng)“平臺(tái)無關(guān)化”。

  我們需要構(gòu)造相關(guān)物件的數(shù)據(jù)結(jié)構(gòu),以便“解釋”平臺(tái)識(shí)別物件類型并進(jìn)行正確的繪制。例如下面的結(jié)構(gòu)完成了一個(gè)語言選項(xiàng)(文字物件)的描述:

  void UI_ChangeLan()

  {

  UI_Lan=VAL_Lan;

  ReDraw();

  }

  code byte *STR_LAN_CHN[]=

  {

  “中文”,

  “英文”,

  “法文”,

  “西班牙文”,

  };

  code word TXT_LAN_CHN[]=

  {

  //文字物件的標(biāo)志 對(duì)應(yīng)的文字資源 對(duì)應(yīng)的變量 具有的可選項(xiàng)目總數(shù) 當(dāng)該物件被改變時(shí)的執(zhí)行動(dòng)作

  RES_TXT,STR_LAN_CHN,VAL_LAN,sizeof(STR_LAN_CHN)/sizeof(byte *),UI_ChangeLan

  };

  第一個(gè)數(shù)據(jù)RES_TXT向“解釋”平臺(tái)表明這個(gè)物件是文字,具有文字的數(shù)據(jù)結(jié)構(gòu)。“解釋”平臺(tái)依據(jù)這一點(diǎn),按照事先約定的結(jié)構(gòu)讀取后繼數(shù)據(jù),第二個(gè)數(shù)據(jù)表明其文字內(nèi)容的來源是STR_LAN_CHN,第三個(gè)數(shù)據(jù)表明需要根據(jù)哪個(gè)變量來決定獲取文字資源中第幾個(gè)數(shù)據(jù),而第四個(gè)數(shù)據(jù)表明,該物件具有多少個(gè)可供選擇的文字內(nèi)容,最后一個(gè)數(shù)據(jù)規(guī)定了當(dāng)該物件發(fā)生改變時(shí)需要做什么。這樣,“解釋”平臺(tái)獲得了足夠的信息去“繪制”這樣一個(gè)語言選項(xiàng),并可以在發(fā)生改變時(shí)去自動(dòng)執(zhí)行UI_ChangeLan()這個(gè)函數(shù),幫助程序員去完成語言改變所需要進(jìn)行的操作。

  事實(shí)上,所有這些結(jié)構(gòu)完全可以進(jìn)行定制,只要與“解釋”平臺(tái)保持一致就可以了。

  利用這樣一個(gè)OSD驅(qū)動(dòng)結(jié)構(gòu),一旦“解釋”平臺(tái)構(gòu)建完成,OSD開發(fā)人員需要做的就變成利用平臺(tái)支持的各種物件積木,進(jìn)行擺放、堆積來構(gòu)造OSD圖形表現(xiàn),而不必要重復(fù)編寫實(shí)現(xiàn)代碼和關(guān)心與特定硬件平臺(tái)相關(guān)的驅(qū)動(dòng)代碼細(xì)節(jié)。

  更進(jìn)一步,甚至連這些積木的擺放和設(shè)計(jì),我們可以設(shè)計(jì)一個(gè)直觀的Windows應(yīng)用程序來完成諸如圖形-->字符元件生成器、OSD圖形,以及最終的資源文件和UI資料數(shù)組的生成,并與底層的“解釋”平臺(tái)進(jìn)行聯(lián)接編譯,得到最后的MCU代碼。

  這樣的OSD界面開發(fā)環(huán)境會(huì)擺脫抽象、枯燥和低效率,變得直觀、有趣,甚至可以由客戶自己設(shè)計(jì)相關(guān)的OSD的界面,而完全不需要編程經(jīng)驗(yàn)和對(duì)OSD底層驅(qū)動(dòng)的了解。

  需要指出的是,相較傳統(tǒng)的if else,的OSD UI處理機(jī)制會(huì)帶來最終程序體積的增加和運(yùn)行速度的變慢,但是這些缺點(diǎn)在MCU內(nèi)部程序空間不斷增加和支持的時(shí)鐘頻率不斷提高的情況下是微不足道的。所以,如果讀者面對(duì)的案例是對(duì)MCU處理速度和程序存儲(chǔ)器受限的情況下,可能并不適用這樣的方案。以筆者開發(fā)的液晶項(xiàng)目為例,在支持所有功能、圖文、麗音及游戲、日歷等附加功能的情況下,基于MCS51的多任務(wù)系統(tǒng)的總程序小于32KB,而基于Myson MTV230的OSD+MCU處理器的運(yùn)行速度非???,并不會(huì)感到任何延遲。而通常支持位圖OSD的開發(fā)環(huán)境使用的是X86或更快速的ARM等處理器,并具有大于2MB的程序存儲(chǔ)空間。

  本文小結(jié)

  當(dāng)固件開發(fā)工程師面對(duì)越來越復(fù)雜的應(yīng)用時(shí),面向?qū)ο蟆?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/結(jié)構(gòu)化">結(jié)構(gòu)化的編程方式會(huì)變得越來越重要,其直接的好處是編程效率的提高和維護(hù)成本的下降,同時(shí)對(duì)于程序的健壯性也有幫助。本文提供的方法的優(yōu)越性已經(jīng)在實(shí)際的開發(fā)案例中得到檢驗(yàn),這樣完成同樣的OSD界面,筆者可以縮短到原來的1/4的時(shí)間,并提高了代碼的質(zhì)量。


上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉