專(zhuān)利名稱(chēng):點(diǎn)陣圖形界面開(kāi)發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在實(shí)時(shí)操作系統(tǒng)中進(jìn)行圖形界面開(kāi)發(fā)的方法,特別涉及一種在vxWorks實(shí)時(shí)操作系統(tǒng)中進(jìn)行圖形界面開(kāi)發(fā)的方法。
背景技術(shù):
在PC系統(tǒng)平臺(tái)上開(kāi)發(fā)用戶(hù)圖形界面時(shí),開(kāi)發(fā)人員可以利用大量開(kāi)發(fā)語(yǔ)言和IDE(Integerated Development Environment,是一種集成了代碼編輯器、編譯器、調(diào)試器等與開(kāi)發(fā)有關(guān)的實(shí)用工具的軟件。由于大部分常用工具都集成在一起了,所以使用IDE來(lái)進(jìn)行開(kāi)發(fā)工作,會(huì)大大提高工作效率)提供的圖形界面開(kāi)發(fā)工具,快速地完成設(shè)計(jì)開(kāi)發(fā)工作。然而,在基于vxWorks嵌入式實(shí)時(shí)操作系統(tǒng)(或稱(chēng)為平臺(tái))上,開(kāi)發(fā)圖形界面卻面臨更多的技術(shù)難題由于操作系統(tǒng)一般只提供簡(jiǎn)單的圖形處理API(Application Programming Interface,應(yīng)用程序接口,通常也稱(chēng)為API函數(shù)),如描點(diǎn)、清屏等,大大提高了圖形界面制作的難度;雖然使用zinc等開(kāi)發(fā)工具可以提高圖形界面開(kāi)發(fā)效率,但是由此開(kāi)發(fā)出來(lái)的圖形界面必須基于windml圖形界面開(kāi)發(fā)平臺(tái),而且開(kāi)發(fā)工具提供的類(lèi)windows界面元素普遍尺寸較大,如果在顯示屏尺寸很小、不支持多色彩、系統(tǒng)實(shí)時(shí)性能要求很高的情況下,則不適合采用zinc。而傳統(tǒng)的圖形界面API封裝方法,一般都只提供繪制點(diǎn)、線(xiàn)、面、字符等圖形的API,真正要實(shí)現(xiàn)圖形界面的繪制,還是必須將大量的API組合起來(lái),開(kāi)發(fā)和調(diào)試的復(fù)雜度依然沒(méi)有得到根本的簡(jiǎn)化。
傳統(tǒng)的圖形界面開(kāi)發(fā)方法都是直接操作顯示屏,每當(dāng)顯示的圖形發(fā)生變化,就只能先清屏,然后重“畫(huà)”整個(gè)屏幕,這樣的后果就是造成屏幕閃爍,而且程序的執(zhí)行效率很低。
發(fā)明內(nèi)容
本發(fā)明的目的是解決在vxWorks等嵌入式實(shí)時(shí)操作系統(tǒng)上開(kāi)發(fā)圖形界面難度高、圖形界面實(shí)時(shí)性能較差、圖形變化時(shí)顯示屏閃爍的技術(shù)難題,提供一種圖形界面開(kāi)發(fā)容易、圖形處理API接口程序數(shù)量少、實(shí)時(shí)性能好、圖形變化時(shí)顯示屏不閃爍的點(diǎn)陣圖形界面開(kāi)發(fā)方法。
本發(fā)明的目的是通過(guò)下述技術(shù)方案來(lái)實(shí)現(xiàn)的點(diǎn)陣圖形界面開(kāi)發(fā)方法,包括如下步驟
a.預(yù)先構(gòu)建圖形處理API接口程序,構(gòu)建的圖形處理API接口程序是控制顯示屏上的點(diǎn)陣集合,以控制顯示屏變化的程序;b.將圖形處理API接口程序存儲(chǔ)在單片機(jī)內(nèi);c.獲取圖形界面圖片的點(diǎn)陣集合;d.調(diào)用單片機(jī)內(nèi)的圖形處理API接口程序,根據(jù)圖形界面圖片的點(diǎn)陣集合改變顯示屏的點(diǎn)陣顯示,以組合構(gòu)成或改變生成圖形界面。
所述的圖形界面圖片格式為GIF或JPG或BMP或PNG。
所述單片機(jī)內(nèi)設(shè)置有圖形緩存器,在調(diào)用圖形處理API接口程序在顯示屏上生成新圖形界面時(shí),先將原來(lái)整屏圖形的像素?cái)?shù)據(jù)保存在圖形緩存器里,然后根據(jù)調(diào)用命令先修改圖形緩存器內(nèi)的數(shù)據(jù),再將圖形緩存器中發(fā)生變化的點(diǎn)陣區(qū)域映射到顯示屏上。
所述圖形處理API接口程序中包括輸出字符程序,輸出的字符包括用戶(hù)可自定義的轉(zhuǎn)義字符。
本發(fā)明的圖形處理API接口程序是與點(diǎn)陣?yán)L制相關(guān)的API程序,通過(guò)調(diào)用直接控制顯示屏上的點(diǎn)陣集合以實(shí)現(xiàn)圖形界面的開(kāi)發(fā),與傳統(tǒng)的繪制點(diǎn)、線(xiàn)、面、字符等圖形的API相比,具有如下優(yōu)點(diǎn)1、避免了傳統(tǒng)圖形界面設(shè)計(jì)方法中大量的圖形元素繪制編程工作,具有API接口程序數(shù)量少、使用簡(jiǎn)單、意思明確的優(yōu)點(diǎn),用戶(hù)在開(kāi)發(fā)圖形界面時(shí),不需要考慮各種各樣的點(diǎn)、線(xiàn)、面的疊加,大大降低了編程的難度,而且將字符和一些特殊的圖形元素繪制統(tǒng)一到繪制字符操作中,簡(jiǎn)化了界面中動(dòng)態(tài)內(nèi)容的繪制;2、通過(guò)提供的快速點(diǎn)陣集合生成工具,直接獲取圖形界面圖片的點(diǎn)陣集合,在一定程度上實(shí)現(xiàn)了實(shí)時(shí)操作系統(tǒng)圖形界面開(kāi)發(fā)的“所見(jiàn)即所得”——只要能畫(huà)出圖形界面的圖片,就可以很快將其轉(zhuǎn)化為點(diǎn)陣集合,通過(guò)本發(fā)明的開(kāi)發(fā)方法在目標(biāo)系統(tǒng)上顯示出來(lái),使受限平臺(tái)下復(fù)雜圖形界面的開(kāi)發(fā)成為可能;3、設(shè)置圖形緩存器,在圖形界面發(fā)生改變時(shí),先修改圖形緩存,再將緩存中發(fā)生變化的區(qū)域映射到顯示屏上,就可以有效解決屏幕閃爍的問(wèn)題,并降低了屏幕刷新的頻率和范圍,大幅減少了不必要的I/O操作,提高了程序的執(zhí)行效率;4、利用明暗關(guān)系倒轉(zhuǎn)和圖形緩存器的部分粘貼,可以方便地實(shí)現(xiàn)彈出對(duì)話(huà)框、高亮選中顯示等復(fù)雜圖形界面;
5、本發(fā)明沒(méi)有采用windml(wind multi-library)圖形界面開(kāi)發(fā)平臺(tái),而直接以VGA描點(diǎn)、清屏程序?yàn)榛A(chǔ)做了上層封裝,比使用zinc等開(kāi)發(fā)工具開(kāi)發(fā)的圖形界面更“輕量級(jí)”,不需要vxWorks系統(tǒng)配置windml模塊。同時(shí),只需要根據(jù)不同系統(tǒng)平臺(tái)提供的底層API程序替換底層描點(diǎn)、清屏API程序,就可以方便地實(shí)現(xiàn)系統(tǒng)的移植。
可見(jiàn),采用上述步驟的本發(fā)明,與現(xiàn)有的技術(shù)相比,具有圖形界面開(kāi)發(fā)難度低、圖形處理API接口程序數(shù)量少、實(shí)時(shí)性能好、圖形變化時(shí)顯示屏不閃爍、使用簡(jiǎn)單的優(yōu)點(diǎn),可適用于如vxWorks等實(shí)時(shí)操作系統(tǒng)進(jìn)行圖形界面開(kāi)發(fā)中。
圖1是本發(fā)明實(shí)施例的示意圖;圖2是本發(fā)明實(shí)施例的獲取圖形界面圖片點(diǎn)陣集合的示意圖;圖3是本發(fā)明實(shí)施例的圖形界面示意圖。
具體實(shí)施例方式
下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
在單片機(jī)嵌入式實(shí)時(shí)操作系統(tǒng)中開(kāi)發(fā)圖形界面,該單片機(jī)的顯示屏為160×120規(guī)格的單色液晶顯示屏。首先在其單片機(jī)的存儲(chǔ)器中預(yù)先構(gòu)建如表1所示的一套與點(diǎn)陣?yán)L制相關(guān)的圖形處理API接口程序,并稱(chēng)其為API函數(shù)。可以看出,上述函數(shù)從功能上劃分主要有三類(lèi)一是利用點(diǎn)陣集合繪制全部或部分圖;二是全部或部分清屏;三是對(duì)點(diǎn)陣集合進(jìn)行打字、區(qū)域粘貼、變暗、明暗轉(zhuǎn)換等操作。上述函數(shù)都是根據(jù)160×120規(guī)格定制的,針對(duì)不同的屏幕規(guī)格,可以將上述函數(shù)進(jìn)行修改。
表1圖形處理API接口程序表
表1中各個(gè)圖形處理API接口程序(API函數(shù))的主要實(shí)現(xiàn)方法是1、全屏函數(shù)采用一個(gè)unsigned long變量表示橫向32個(gè)像素的明暗關(guān)系(0表示暗、1表示亮),則一行需5個(gè)、全屏需5×120個(gè)unsigned long變量,在全屏范圍內(nèi)根據(jù)這600個(gè)unsigned long變量依次設(shè)置所有像素點(diǎn)的明暗。
2、繪制區(qū)域函數(shù)實(shí)現(xiàn)方法與繪制整屏類(lèi)似,但不對(duì)指定區(qū)域范圍以外的像素點(diǎn)進(jìn)行設(shè)置,區(qū)域范圍由左上和右下兩點(diǎn)的坐標(biāo)確定。
3、插入字符函數(shù)通過(guò)char數(shù)組中的文字編碼索引到字庫(kù)中的文字點(diǎn)陣(一個(gè)西文字符大小為8×16像素,中文全角字符大小為16×16字符),從指定位置起開(kāi)始根據(jù)文字點(diǎn)陣信息更改相應(yīng)范圍內(nèi)的像素點(diǎn)陣明暗。
4、粘貼函數(shù)首先利用目標(biāo)點(diǎn)陣進(jìn)行繪制整屏操作,再利用源點(diǎn)陣在指定范圍內(nèi)進(jìn)行繪制區(qū)域操作。
5、明暗倒轉(zhuǎn)函數(shù)將源點(diǎn)陣與全1在指定范圍內(nèi)進(jìn)行異或操作。
6、清屏函數(shù)以全0點(diǎn)陣?yán)L制整屏。
7、清除指定區(qū)域函數(shù)將點(diǎn)陣在指定區(qū)域內(nèi)與全0進(jìn)行與操作,再繪制整屏。
8、指定區(qū)域變暗函數(shù)將點(diǎn)陣在指定區(qū)域內(nèi)與全0進(jìn)行與操作。
然后,在計(jì)算機(jī)上設(shè)計(jì)出想在單片機(jī)的顯示屏上顯示的圖形界面圖片,如圖2所示,左邊是圖形界面圖片,該圖片可以是GIF或JPG或BMP或PNG格式,由圖片像素信息提取器(該工具可以是采用通用的從圖片像素中提取點(diǎn)陣的程序,將從圖片像素中提取的點(diǎn)陣集合數(shù)據(jù)按unsigned long的數(shù)據(jù)格式進(jìn)行存儲(chǔ)或傳遞)將圖片的點(diǎn)陣集合提取出來(lái),將圖形界面的圖形結(jié)構(gòu)轉(zhuǎn)化為與之對(duì)應(yīng)的點(diǎn)陣集合,圖2的右邊是圖片像素提取器在計(jì)算機(jī)上運(yùn)行提取圖形界面圖片點(diǎn)陣集合的屏幕示意圖。然后將其它后續(xù)的圖形界面圖片都通過(guò)同樣的方式獲取其點(diǎn)陣集合。
如圖1所示,將圖形界面的點(diǎn)陣集合存儲(chǔ)在圖形緩存器內(nèi),在圖形界面發(fā)生變化時(shí),不直接操作顯示屏,先修改圖形緩存器中的相應(yīng)點(diǎn)陣集合數(shù)據(jù),再將圖形緩存器中發(fā)生變化的區(qū)域映射到顯示屏上,這期間,可以利用ClearArea函數(shù)清除指定區(qū)域的點(diǎn)陣,再利用DrawArea函數(shù)繪制指定區(qū)域的點(diǎn)陣。
利用圖形緩存器,一些以前看來(lái)復(fù)雜的操作可以變得簡(jiǎn)單。例如,可以用與全1的異或操作,輕松地構(gòu)建函數(shù)overturn,實(shí)現(xiàn)將指定區(qū)域的明暗關(guān)系倒轉(zhuǎn)。還可以構(gòu)建函數(shù)pasteArea,利用兩個(gè)存儲(chǔ)在緩存器內(nèi)的指定區(qū)域內(nèi)點(diǎn)陣數(shù)據(jù),進(jìn)行位或操作實(shí)現(xiàn)指定區(qū)域內(nèi)的圖形“粘貼”。這樣,看起來(lái)很難實(shí)現(xiàn)的彈出對(duì)話(huà)框操作,利用pasteArea函數(shù)就變得很簡(jiǎn)單了。
將普通的中西文字符和用戶(hù)自定義的轉(zhuǎn)義字符的點(diǎn)陣集合存儲(chǔ)在存儲(chǔ)器中,并將其與ASCII碼值如表2所示對(duì)應(yīng)起來(lái),利用預(yù)先存儲(chǔ)的API插入字符函數(shù),可以將其調(diào)出插入在圖形界面的點(diǎn)陣中,快速實(shí)現(xiàn)圖形界面的動(dòng)態(tài)顯示和復(fù)雜界面元素的繪制。
根據(jù)上述方法,可以在以單片機(jī)為處理核心的實(shí)時(shí)操作系統(tǒng)顯示屏上開(kāi)發(fā)出如圖3所示的圖形界面,而且功能提示直觀(guān),如選中標(biāo)號(hào)為1的圖標(biāo),最下面的空白條中部就會(huì)顯示“系統(tǒng)”的文字提示,采用傳統(tǒng)的圖形界面開(kāi)發(fā)方法在受限平臺(tái)如vxWorks等實(shí)時(shí)操作系統(tǒng)上幾乎不可能開(kāi)發(fā)出這些復(fù)雜美觀(guān)的界面。
表2用戶(hù)自定義轉(zhuǎn)義字符ASCII碼值對(duì)應(yīng)表
權(quán)利要求
1.點(diǎn)陣圖形界面開(kāi)發(fā)方法,其特征在于包括如下步驟,a.預(yù)先構(gòu)建圖形處理API接口程序,構(gòu)建的圖形處理API接口程序是控制顯示屏上的點(diǎn)陣集合,以控制顯示屏變化的程序;b.將圖形處理API接口程序存儲(chǔ)在單片機(jī)內(nèi);c.獲取圖形界面圖片的點(diǎn)陣集合;d.調(diào)用單片機(jī)內(nèi)的圖形處理API接口程序,根據(jù)圖形界面圖片的點(diǎn)陣集合改變顯示屏的點(diǎn)陣顯示,以組合構(gòu)成或改變生成圖形界面。
2.如權(quán)利要求1所述的點(diǎn)陣圖形界面開(kāi)發(fā)方法,其特征在于所述的圖形界面圖片格式為GIF或JPG或BMP或PNG。
3.如權(quán)利要求1或2所述的點(diǎn)陣圖形界面開(kāi)發(fā)方法,其特征在于單片機(jī)內(nèi)設(shè)置有圖形緩存器,在調(diào)用圖形處理API接口程序在顯示屏上生成新圖形界面時(shí),先將原來(lái)整屏圖形的像素?cái)?shù)據(jù)保存在圖形緩存器里,然后根據(jù)調(diào)用命令先修改圖形緩存器內(nèi)的數(shù)據(jù),再將圖形緩存器中發(fā)生變化的點(diǎn)陣區(qū)域映射到顯示屏上。
4.如權(quán)利要求3所述的點(diǎn)陣圖形界面開(kāi)發(fā)方法,其特征在于圖形處理API接口程序中包括輸出字符程序,輸出的字符包括用戶(hù)可自定義的轉(zhuǎn)義字符。
全文摘要
本發(fā)明公開(kāi)一種點(diǎn)陣圖形界面開(kāi)發(fā)方法,涉及一種在實(shí)時(shí)操作系統(tǒng)中進(jìn)行圖形界面開(kāi)發(fā)的方法,包括如下步驟,預(yù)先構(gòu)建圖形處理API接口程序,然后將圖形處理API接口程序存儲(chǔ)在單片機(jī)內(nèi),調(diào)用單片機(jī)內(nèi)的圖形處理API接口程序在顯示屏上組合構(gòu)成或改變生成圖形界面,構(gòu)建的圖形處理API接口程序是通過(guò)控制顯示屏上的點(diǎn)陣集合,以控制顯示屏變化的程序;在構(gòu)建圖形API接口程序與將其存儲(chǔ)入單片機(jī)內(nèi)兩個(gè)步驟之間,還有一個(gè)獲取圖形界面圖片的點(diǎn)陣集合步驟。具有圖形界面開(kāi)發(fā)難度低、圖形處理API接口程序數(shù)量少、實(shí)時(shí)性能好、圖形變化時(shí)顯示屏不閃爍的優(yōu)點(diǎn),可適用于如vxWorks等實(shí)時(shí)操作系統(tǒng)進(jìn)行圖形界面開(kāi)發(fā)中。
文檔編號(hào)G06F9/44GK1869924SQ20061002129
公開(kāi)日2006年11月29日 申請(qǐng)日期2006年6月29日 優(yōu)先權(quán)日2006年6月29日
發(fā)明者黎銳, 魏勇, 江泓 申請(qǐng)人:中國(guó)電子科技集團(tuán)公司第三十研究所