基于EP7312的新型嵌入式系統(tǒng)的實(shí)現(xiàn)
3 ViewML窗口界面的改進(jìn)
本文引用地址:http://www.ex-cimer.com/article/274679.htmViewml的應(yīng)用層很小,只提供了基本的圖形用戶界面布局。作為與用戶交互的窗口,要求有美觀性,實(shí)用性和可操作性。為了使用戶界面更為完善,本系統(tǒng)主要的工作增加對(duì)HTML文件的打開﹑保存和關(guān)閉;Web頁(yè)的刷新﹑前進(jìn)﹑返回等。
編寫界面部分主要應(yīng)用FLTK窗口部件,F(xiàn)LTK提供了比較豐富的控件,如:按鈕﹑滾動(dòng)條﹑文本框﹑對(duì)話框﹑列表框等等。所有這些窗口部件的框架類都在FLNK(FLTK移植到Microwindows的Nano-X API上的版本)的文件夾FL中包含的100個(gè)頭文件中定義。ViewML中窗口的實(shí)現(xiàn)是通過(guò)創(chuàng)建類VMLAppWindow來(lái)構(gòu)建基本的圖形用戶界面?,其中只包括三個(gè)函數(shù):VMLAppWindow(int x, int y, int w, int h) : PARENT_WINDOW(x,y,w,h,"ViewML Browser") { },virtual void resize_notify(int x, int y, int w, int h),virtual int handle(int event);}在圖形界面上添加按鈕save,open,reload,forword,backward等,需在類VMLAppWindow中定義的相應(yīng)函數(shù)。
extern Fl_Button *Save
extern Fl_Button *Open
extern Fl_Button *Forward;
extern Fl_Button *Backward;
extern Fl_Button *Reload;
詳情參閱頭文件Fl_Window.H,f Fl_Widget.H.編寫好圖形界面后,通過(guò)響應(yīng)鼠標(biāo)事件將圖形和相應(yīng)的事件關(guān)聯(lián)起來(lái)。
在ViewML應(yīng)用層中原有兩個(gè)函數(shù)static int send(Fl_Widget* o, int event):向HTTP發(fā)送請(qǐng)求并將請(qǐng)求事例放入隊(duì)列;int VMLAppWindow::handle(int event):調(diào)用線程對(duì)事例隊(duì)列進(jìn)行處理。除了實(shí)例化上面定義的函數(shù),在這里還加入處理網(wǎng)頁(yè)的保存,后退,前進(jìn)的函數(shù)都要用到的函數(shù)int VMLAppWindow::temp(int event),其功能是臨時(shí)保存網(wǎng)頁(yè)。其處理流程為:
(1)在處理事例隊(duì)列為非空時(shí),從隊(duì)列中取出一處理過(guò)的HTTP請(qǐng)求
(2)將HTTP請(qǐng)求結(jié)果用HTML三步:Tokenizer , HTNL-Parser , HTML-Layout進(jìn)行處理
(3)把HTTP處理的結(jié)果加入臨時(shí)保存隊(duì)列中
(4)從處理事例隊(duì)列中刪除此請(qǐng)求結(jié)果
隊(duì)列采用鏈表實(shí)現(xiàn),當(dāng)需要從當(dāng)前頁(yè)面后退時(shí),其處理流程為:
(1)捕獲鼠標(biāo)事件
(2)從隊(duì)首搜索至工作指針的下一個(gè)元素為當(dāng)前指針時(shí),當(dāng)前指針后退
(3)將當(dāng)前指針?biāo)赶虻脑卣{(diào)用HTML引擎處理
前進(jìn)和刷新功能實(shí)現(xiàn)流程與后退類似,這里就不贅敘了。保存當(dāng)前HTM法略微復(fù)雜些,因?yàn)樵诒4骓?yè)面時(shí)還要同時(shí)保存頁(yè)面中的圖像文件,算法如下:
(1)輸入存盤路徑和文件名
(2)對(duì)文件名進(jìn)行自動(dòng)處理如加上后綴htm,創(chuàng)建一個(gè)目錄,以files為后綴存放圖形文件
(3)從臨時(shí)保存隊(duì)列中取當(dāng)前指針,指針為非頭指針時(shí)取其所指向HTML文件,處理文件。
(4)將文件存入磁盤
基于嵌入式系統(tǒng)的硬件條件有限,無(wú)存儲(chǔ)量大的磁盤等設(shè)備。,且FLASH或ROM等存儲(chǔ)介質(zhì)的價(jià)格相對(duì)于臺(tái)式機(jī)上使用的硬盤﹑光盤等是比較昂貴的。所以嵌入式系統(tǒng)只能以小巧且高效來(lái)贏得市場(chǎng)。完善了窗口功能的系統(tǒng)完全能滿足大部分用戶的應(yīng)用需求了。
4結(jié)束語(yǔ)
當(dāng)前通訊正在快速地成為嵌入式系統(tǒng)的一般需求。本文主要闡述了一種新的嵌入式系統(tǒng),支持圖形界面,支持瀏覽器。該系統(tǒng)已在自主開發(fā)的硬件平臺(tái)上成功運(yùn)行了。在以后的工作中將致力于在該系統(tǒng)中增加更全面的功能,如對(duì)Java虛擬機(jī)的支持,增加郵件收發(fā)等。
linux相關(guān)文章:linux教程
pos機(jī)相關(guān)文章:pos機(jī)原理
電荷放大器相關(guān)文章:電荷放大器原理
評(píng)論