<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/167910.htm

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

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

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

            void UI_ChangeLan()

            {

            UI_Lan=VAL_Lan;

            ReDraw();

            }

            code byte *STR_LAN_CHN[]=

            {

            “中文”,

            “英文”,

            “法文”,

            “西班牙文”,

            };

            code word TXT_LAN_CHN[]=

            {

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

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

            };

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

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

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

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

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

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

            本文小結(jié)

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


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();