王曉燕+劉軍霞+楊先文
摘 要: 基于嵌入式Qt和Flash開發(fā)技術(shù),提出一種適合嵌入式Linux的軟件架構(gòu)。該架構(gòu)主要由UI界面及交互腳本、運行適配接口和應用主程序三部分組成,分別采用ActionScript,JavaScript和C/C++三種語言實現(xiàn)。遵循軟件架構(gòu)設計思路,實現(xiàn)了一款嵌入式串口通信軟件,并且與友善之臂Mini2440內(nèi)置串口助手進行對比測試。結(jié)果表明,該架構(gòu)運行流暢,在UI展現(xiàn)、用戶體驗等方面有明顯優(yōu)勢,對于嵌入式應用產(chǎn)品的開發(fā)具有實用價值。
關鍵詞: 嵌入式Linux; Qt; Flash; 軟件架構(gòu); 串口通信
中圖分類號: TN919?34; TP368.1 文獻標識碼: A 文章編號: 1004?373X(2017)01?0013?04
Abstract: A software architecture suitable for the embedded Linux is proposed based on Qt and Flash development techno?logies. The architecture is composed of the UI interface and its interactive script, running adapter interface and application main program, and they are implemented with ActionScript, JavaScript and C/C++ respectively. According to the design thought of the software architecture, an embedded serial port communication software was implemented, and performed for comparison test with the serial assistant built in FriendlyARM Mini2440. The results show that the architecture works well, and has obvious advantages in the aspects of UI display and user experience, and a certain practical value for the embedded application product development.
Keywords: embedded Linux; Qt; Flash; software architecture; serial port communication
0 引 言
嵌入式Linux操作系統(tǒng)內(nèi)核開放、功能強大,且又易于裁剪和移植,已經(jīng)成為嵌入式開發(fā)的首選。針對嵌入式Linux的窗口應用開發(fā),已有的成熟技術(shù)主要有Micro?Windows/NanoX,OpenGUI,MiniGUI,Qt/Embedded等[1]。無論哪種開發(fā)技術(shù),都面臨控件功能有限、界面效果呆板、UI與底層代碼強耦合等問題,造成其在UI展現(xiàn)、用戶體驗等方面欠佳。因此,結(jié)合當前流行的交互式多媒體技術(shù),研究嵌入式軟件架構(gòu)具有很強的應用背景。
Flash是一個非常優(yōu)秀的矢量多媒體制作工具,已成為一種交互式矢量圖和多媒體的標準[2]。采用Flash設計UI的優(yōu)點有:Flash程序運行于Flash player虛擬機中,具有良好的跨平臺和兼容性;Flash程序是基于各個幀之間的跳轉(zhuǎn),而不是應用程序類的構(gòu)造/析構(gòu),運行速度流暢;Flash程序腳本可以管理界面運行,有助于實現(xiàn)UI界面和應用主程序的開發(fā)分離。目前,以Flash打造UI界面,配合底層程序的軟件架構(gòu)在Windows平臺上業(yè)已成熟[3],但是該架構(gòu)基于Windows獨有的COM組件方式實現(xiàn),在Linux中缺少相應的替代方案。
本文基于嵌入式Qt和Flash開發(fā)技術(shù),提出了一種適合嵌入式Linux的軟件架構(gòu),實測表明,該架構(gòu)滿足嵌入式軟件開發(fā)的需求,對于嵌入式應用產(chǎn)品的開發(fā)具有實用價值。
1 基礎技術(shù)
1.1 嵌入式Qt開發(fā)技術(shù)
Qt是Trolltech公司的一個標志性產(chǎn)品,最初是針對桌面式應用推出的,而后又發(fā)布了適應Linux嵌入式設備的Qt/Embedded Linux,它是一個可以在嵌入式Linux上提供窗口系統(tǒng)的產(chǎn)品[4]。Qt推崇“一次編程,隨便編譯”理念,為跨平臺的圖形用戶程序提供了一個完整的C++應用程序開發(fā)框架,這些平臺包括Windows,Linux,Solaris等,且許多Qt模塊庫也都是Qt/Embedded Linux的組成部分。
在Qt模塊庫中,QtWebkit模塊提供Qt應用程序使用Web瀏覽器的視圖,它基于開源Web瀏覽器引擎WebKit實現(xiàn),為Qt和HTML建起了一個數(shù)據(jù)交互通道,使得其他文件(如Flash制作的.swf文件等)能夠通過HTML的
1.2 Flash開發(fā)技術(shù)
Flash又被稱作為閃客,是一種集動畫創(chuàng)作與應用程序開發(fā)于一身的創(chuàng)作軟件,為嵌入式應用程序、桌面應用程序、交互式Web站點等應用開發(fā)提供了功能全面的創(chuàng)作和編輯環(huán)境。借助于Flash軟件,可以實現(xiàn)更強的動畫效果和多樣的UI表現(xiàn)力,并且在Flash工具中還內(nèi)置了面向?qū)ο蟮木幊陶Z言ActionScript[2],它吸收了C++,Java以及JavaScript等編程語言的部分特點,已發(fā)展為ActionScript 3.0版本。Flash功能強大、類庫豐富、語法簡明,可以實現(xiàn)各種動畫特效、對圖像的良好控制、強大的人機交互等功能。
客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com
電信與信息服務業(yè)務經(jīng)營許可證:京icp證060024號
Dragonsource.com Inc. All Rights Reserved
2 嵌入式Linux軟件架構(gòu)設計
結(jié)合Qt應用開發(fā)框架和Flash開發(fā)技術(shù),本文提出的嵌入式Linux軟件架構(gòu)如圖1所示。
圖1中,UI界面基于Flash軟件設計,對于UI界面背景內(nèi)容,可以單獨制作成圖片文件,導入至Flash工程舞臺即可,對于其他交互控件或動畫部分可以定制成影片剪輯(MovieClip)或按鈕(Button)等;UI交互腳本基于ActionScript語言開發(fā),實現(xiàn)與外界的通信和UI界面信息的加載/更新;運行適配接口,基于JavaScript語言開發(fā),對上實現(xiàn)與UI交互腳本之間的通信,對下實現(xiàn)與應用主程序之間的通信;應用主程序基于C/C++語言開發(fā),實現(xiàn)基于Qt模塊庫的用戶個性化定制服務。
在嵌入式Linux環(huán)境中運行基于上述架構(gòu)開發(fā)的應用程序時,首先需要在系統(tǒng)中安裝嵌入式Qt模塊庫和Flash控制庫(libflashplayer.so)。其中,Qt模塊庫用于應用主程序運行時系統(tǒng)支持庫,F(xiàn)lash控件庫用于在HTML頁面加載運行UI界面和交互腳本。嵌入式Qt模塊庫和Flash控制庫的安裝屬于系統(tǒng)配置范疇,以下主要介紹UI界面和交互腳本、運行適配接口和應用主程序的設計思路。
3 關鍵技術(shù)設計
3.1 UI界面和交互腳本設計
UI界面設計可參考Flash動畫[2]設計方法,只是此時界面元素的布局更多是基于幀,而不是時間軸。對于UI界面背景內(nèi)容,可在PhotoShop等軟件中制作成圖片并導入到影片舞臺,其他交互控制或動畫部分,可基于基本控件、影片剪輯和按鈕對象方式自定制。
本文以文本框(TextBox)、按鈕(Button)和下拉框(ComboBox)為例,介紹UI控件及交互腳本的設計思路。結(jié)合應用實際,腳本采用ActionScript 2.0編程語言。
(1) 文本框(TextBox)。在舞臺中增加文本框,設置為動態(tài)文本,設置關聯(lián)變量名(如myVariable)。在時間軸中新建空白關鍵幀,選中該幀并打開動作面板,通過this.myVariable實現(xiàn)文本框內(nèi)容的讀寫。
(2) 按鈕(Button)。在庫中新建按鈕,分別設置其彈起、經(jīng)過、按下、點擊4個狀態(tài)顯示效果。使用時將其拖動至舞臺中,選中該對象并打開動作面板,通過on()函數(shù)實現(xiàn)鍵鈕事件觸發(fā)。
(3) 下拉框(ComboBox)。在庫中新建影片剪輯,在影片剪輯編輯模式下,通過文本工具設計顯示區(qū)域,通過按鈕對象設計下拉項,通過腳本語言控制下拉項的內(nèi)容及其顯示效果。使用時將該影片剪輯拖動至舞臺中,設置實例名(如myComboBox),在時間軸中新建空白關鍵幀,選中該幀并打開動作面板,通過this.myComboBox訪問下拉框定義的變量和函數(shù)。
此外,UI交互腳本還應實現(xiàn)與HTML頁面文檔的數(shù)據(jù)交互。對于接收HTML頁面數(shù)據(jù),只需在Flash文件嵌入至HTML頁面時,通過
3.2 運行適配接口設計
由于應用主程序采用C/C++編程,UI交互腳本采用ActionScript編程,兩種語言在數(shù)據(jù)類型和通信接口上不一致。因此,設計運行適配接口邏輯,實現(xiàn)兩種語言環(huán)境的轉(zhuǎn)換適配。在與C/C++交互時,支持結(jié)構(gòu)數(shù)據(jù)收發(fā);在與ActionScript交互時,由于受Flash通信方式的限制,只支持字節(jié)數(shù)據(jù)收發(fā)?;谶\行適配接口的數(shù)據(jù)交互模式如圖2所示,運行適配接口的功能包括:
(1) 根據(jù)C/C++和ActionScript基本數(shù)據(jù)類型,定義兩者兼容的通信數(shù)據(jù)結(jié)構(gòu);
(2) 充當C/C++和ActionScript數(shù)據(jù)交互的“信使”,實現(xiàn)C/C++和ActionScript應用數(shù)據(jù)的接收和發(fā)送。當UI腳本發(fā)送字節(jié)數(shù)據(jù)至應用主程序時,接收數(shù)據(jù)并將其裝配成通信數(shù)據(jù)結(jié)構(gòu),再推送至應用主程序;當應用主程序發(fā)送結(jié)構(gòu)數(shù)據(jù)至UI腳本時,接收結(jié)構(gòu)數(shù)據(jù)并將其轉(zhuǎn)換成字節(jié)數(shù)據(jù),再推送至UI腳本。
3.3 應用主程序設計
與運行適配接口交互是應用主程序的首要任務。運行適配接口的運行引擎是QtWebkit模塊,其層次結(jié)構(gòu)如圖3所示。
圖3中,QWebView是加載/更新Web頁面文檔的視圖類,每一個QWebView實例中有一個QWebPage。QWebPage可以訪問這個頁面的文檔結(jié)構(gòu),它主要描述如框架集(Frames),瀏覽歷史和編輯內(nèi)容操作等。Web頁面文檔是通過QWebFrame類展示的,每一個QWebPage擁有一個QWebFrame作為其主框架,而Qt與JavaScript互調(diào)正是通過QWebFrame的兩個函數(shù)實現(xiàn)。addToJavaScriptWindowObject()將QObject對象傳給JavaScript,這樣JavaScript就能調(diào)用QObject的public slots函數(shù);evaluateJavaScript()通過函數(shù)Qt可直接調(diào)用JavaScript中的函數(shù)。
需要說明的是,QWebSetting提供了對QWebView開啟/關閉Plugins和JavaScript功能的配置方法,只有開啟Plugins功能才能運行Web頁面中的Flash文件,只有開啟JavaScript功能才能實現(xiàn)Qt與JavaScript互調(diào),開啟方法為:
4 實例與測試
4.1 實例實現(xiàn)
基于上述設計思路,本文實現(xiàn)了一款嵌入式串口通信軟件,其主要功能包括設置串口參數(shù),接收上位機數(shù)據(jù),發(fā)送數(shù)據(jù)至上位機。
軟件UI界面設計中,主要涉及到的UI控件為文本框、按鈕和下拉框,UI交互腳本實現(xiàn)了用戶輸入的數(shù)據(jù)組織、加載/更新界面顯示,以及結(jié)構(gòu)數(shù)據(jù)與字節(jié)數(shù)據(jù)之間的轉(zhuǎn)換等功能。
4.2 對比測試
以友善之臂Mini2440開發(fā)板[5]為嵌入式目標平臺,對上述實例進行測試。Mini2440自帶的Linux系統(tǒng)包括Qt/Embedded Linux(也稱Qtopia Core),本文實例可以在平臺上直接運行。結(jié)合Mini2440自帶Linux系統(tǒng)內(nèi)置的串口助手,將兩款串口通信軟件進行效果對比,如圖4所示。經(jīng)過實測表明,本文實現(xiàn)的軟件實例達到了串口設置和通信的功能,并且與Mini2440內(nèi)置的串口助手軟件相比,在UI展現(xiàn)、用戶體驗等方面有明顯優(yōu)勢。
5 結(jié) 語
本文研究的嵌入式Linux軟件架構(gòu)具有層次清晰、模塊獨立、易于實現(xiàn)的優(yōu)點,對嵌入式 Linux應用軟件的開發(fā)具有指導意義。作為下一步工作,研究針對通用控件的Flash制作方法,運行適配接口封裝定義,以及UI與程序分離設計的高效機制,提高軟件架構(gòu)的適用性及團隊開發(fā)的效率。
參考文獻
[1] 范朋.基于Qt的嵌入式Linux系統(tǒng)GUI的研究與實現(xiàn)[D].北京:北京郵電大學,2011.
[2] 新視角文化行.FlashCS6動畫制作實戰(zhàn)從入門到精通[M].北京:人民郵電出版社,2013.
[3] 佚名.MFC與Flash聯(lián)合界面開發(fā)技術(shù)[EB/OL].[2012?06?07].http://kuantianxia.blog.51cto.com/1041305/891521.
[4] JASMIN B, MARK S.C++ GUI Qt4編程[M].閆鋒欣,曾泉人,張志強,譯.2版.北京:電子工業(yè)出版社,2010.
[5] 佚名.MINI2440用戶手冊[EB/OL].[2011?04?21].http://zhidao.baidu.com/share/bf3bb8a3707b20a684a89103629e91fd.html.
[6] 安峰.QT平臺上的動態(tài)可定制界面設計[J].單片機與嵌入式系統(tǒng)應用,2014,14(3):24?25.
客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com
電信與信息服務業(yè)務經(jīng)營許可證:京icp證060024號
Dragonsource.com Inc. All Rights Reserved