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