基于EP7312的新型嵌入式系統的實現
3 ViewML窗口界面的改進
本文引用地址:http://www.czjhyjcfj.com/article/274679.htmViewml的應用層很小,只提供了基本的圖形用戶界面布局。作為與用戶交互的窗口,要求有美觀性,實用性和可操作性。為了使用戶界面更為完善,本系統主要的工作增加對HTML文件的打開﹑保存和關閉;Web頁的刷新﹑前進﹑返回等。
編寫界面部分主要應用FLTK窗口部件,FLTK提供了比較豐富的控件,如:按鈕﹑滾動條﹑文本框﹑對話框﹑列表框等等。所有這些窗口部件的框架類都在FLNK(FLTK移植到Microwindows的Nano-X API上的版本)的文件夾FL中包含的100個頭文件中定義。ViewML中窗口的實現是通過創建類VMLAppWindow來構建基本的圖形用戶界面?,其中只包括三個函數: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中定義的相應函數。
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.編寫好圖形界面后,通過響應鼠標事件將圖形和相應的事件關聯起來。
在ViewML應用層中原有兩個函數static int send(Fl_Widget* o, int event):向HTTP發送請求并將請求事例放入隊列;int VMLAppWindow::handle(int event):調用線程對事例隊列進行處理。除了實例化上面定義的函數,在這里還加入處理網頁的保存,后退,前進的函數都要用到的函數int VMLAppWindow::temp(int event),其功能是臨時保存網頁。其處理流程為:
(1)在處理事例隊列為非空時,從隊列中取出一處理過的HTTP請求
(2)將HTTP請求結果用HTML三步:Tokenizer , HTNL-Parser , HTML-Layout進行處理
(3)把HTTP處理的結果加入臨時保存隊列中
(4)從處理事例隊列中刪除此請求結果
隊列采用鏈表實現,當需要從當前頁面后退時,其處理流程為:
(1)捕獲鼠標事件
(2)從隊首搜索至工作指針的下一個元素為當前指針時,當前指針后退
(3)將當前指針所指向的元素調用HTML引擎處理
前進和刷新功能實現流程與后退類似,這里就不贅敘了。保存當前HTM法略微復雜些,因為在保存頁面時還要同時保存頁面中的圖像文件,算法如下:
(1)輸入存盤路徑和文件名
(2)對文件名進行自動處理如加上后綴htm,創建一個目錄,以files為后綴存放圖形文件
(3)從臨時保存隊列中取當前指針,指針為非頭指針時取其所指向HTML文件,處理文件。
(4)將文件存入磁盤
基于嵌入式系統的硬件條件有限,無存儲量大的磁盤等設備。,且FLASH或ROM等存儲介質的價格相對于臺式機上使用的硬盤﹑光盤等是比較昂貴的。所以嵌入式系統只能以小巧且高效來贏得市場。完善了窗口功能的系統完全能滿足大部分用戶的應用需求了。
4結束語
當前通訊正在快速地成為嵌入式系統的一般需求。本文主要闡述了一種新的嵌入式系統,支持圖形界面,支持瀏覽器。該系統已在自主開發的硬件平臺上成功運行了。在以后的工作中將致力于在該系統中增加更全面的功能,如對Java虛擬機的支持,增加郵件收發等。
linux相關文章:linux教程
pos機相關文章:pos機原理
電荷放大器相關文章:電荷放大器原理
評論