?

基于Qt和Flash的嵌入式Linux軟件架構設計

2017-02-16 10:45王曉燕劉軍霞楊先文
現代電子技術 2017年1期
關鍵詞:串口通信

王曉燕+劉軍霞+楊先文

摘 要: 基于嵌入式Qt和Flash開發技術,提出一種適合嵌入式Linux的軟件架構。該架構主要由UI界面及交互腳本、運行適配接口和應用主程序三部分組成,分別采用ActionScript,JavaScript和C/C++三種語言實現。遵循軟件架構設計思路,實現了一款嵌入式串口通信軟件,并且與友善之臂Mini2440內置串口助手進行對比測試。結果表明,該架構運行流暢,在UI展現、用戶體驗等方面有明顯優勢,對于嵌入式應用產品的開發具有實用價值。

關鍵詞: 嵌入式Linux; Qt; Flash; 軟件架構; 串口通信

中圖分類號: 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操作系統內核開放、功能強大,且又易于裁剪和移植,已經成為嵌入式開發的首選。針對嵌入式Linux的窗口應用開發,已有的成熟技術主要有Micro?Windows/NanoX,OpenGUI,MiniGUI,Qt/Embedded等[1]。無論哪種開發技術,都面臨控件功能有限、界面效果呆板、UI與底層代碼強耦合等問題,造成其在UI展現、用戶體驗等方面欠佳。因此,結合當前流行的交互式多媒體技術,研究嵌入式軟件架構具有很強的應用背景。

Flash是一個非常優秀的矢量多媒體制作工具,已成為一種交互式矢量圖和多媒體的標準[2]。采用Flash設計UI的優點有:Flash程序運行于Flash player虛擬機中,具有良好的跨平臺和兼容性;Flash程序是基于各個幀之間的跳轉,而不是應用程序類的構造/析構,運行速度流暢;Flash程序腳本可以管理界面運行,有助于實現UI界面和應用主程序的開發分離。目前,以Flash打造UI界面,配合底層程序的軟件架構在Windows平臺上業已成熟[3],但是該架構基于Windows獨有的COM組件方式實現,在Linux中缺少相應的替代方案。

本文基于嵌入式Qt和Flash開發技術,提出了一種適合嵌入式Linux的軟件架構,實測表明,該架構滿足嵌入式軟件開發的需求,對于嵌入式應用產品的開發具有實用價值。

1 基礎技術

1.1 嵌入式Qt開發技術

Qt是Trolltech公司的一個標志性產品,最初是針對桌面式應用推出的,而后又發布了適應Linux嵌入式設備的Qt/Embedded Linux,它是一個可以在嵌入式Linux上提供窗口系統的產品[4]。Qt推崇“一次編程,隨便編譯”理念,為跨平臺的圖形用戶程序提供了一個完整的C++應用程序開發框架,這些平臺包括Windows,Linux,Solaris等,且許多Qt模塊庫也都是Qt/Embedded Linux的組成部分。

在Qt模塊庫中,QtWebkit模塊提供Qt應用程序使用Web瀏覽器的視圖,它基于開源Web瀏覽器引擎WebKit實現,為Qt和HTML建起了一個數據交互通道,使得其他文件(如Flash制作的.swf文件等)能夠通過HTML的標簽嵌入到Web頁面中,并通過JavaScript腳本進行訪問,且Qt對象也能相應地訪問Web頁面的元素,從而使得軟件底層開發和UI界面開發可分離。

1.2 Flash開發技術

Flash又被稱作為閃客,是一種集動畫創作與應用程序開發于一身的創作軟件,為嵌入式應用程序、桌面應用程序、交互式Web站點等應用開發提供了功能全面的創作和編輯環境。借助于Flash軟件,可以實現更強的動畫效果和多樣的UI表現力,并且在Flash工具中還內置了面向對象的編程語言ActionScript[2],它吸收了C++,Java以及JavaScript等編程語言的部分特點,已發展為ActionScript 3.0版本。Flash功能強大、類庫豐富、語法簡明,可以實現各種動畫特效、對圖像的良好控制、強大的人機交互等功能。

通信與信息技術
試驗靶場無線通信系統綜合效能評估方法
基于.NET電子網絡技術的高??蒲泄芾硐到y設計研究
基于軟件通信體系結構的波形FPGA軟件設計方法
基于Qt和Flash的嵌入式Linux軟件架構設計
基于Android的跨斷層測距記簿程序的開發
物聯網中分布式監控和查詢系統仿真研究
互聯網平臺下的智能信息管理系統設計
面向中長跑體能測試的RFID設計與實現
基于物聯網的圖形化虛擬仿真實驗平臺設計
一種基于圓環冗余解析的抗旋轉與剪切攻擊的信息隱藏算法
改進的變誤差寬度變階數LMS算法
基于OpenCV的紫外成像檢測量化參數提取方法
基于神經網絡的體育商標識別模型
海量小差異圖像高精度挖掘算法設計
基于云計算的圖像分類算法
一種海洋監測數據采集器設計
基于開窗結構和寄生單元的雙陷波超寬帶天線
基于DPI技術的語音視頻流量監控系統設計與實現
計算機網絡安全可視化研究平臺設計與實現
基于BP神經網絡的網絡安全態勢預測研究
改進支持向量機的電子郵件分類
基于人工魚群算法優化神經網絡在網絡入侵檢測中的應用研究
測試·測量·自動化
基于分布式結構的圖書館信息檢索服務系統研究
基于人工神經網絡的圖書館服務質量評價研究
基于RSS技術的圖書館登陸系統研究
醫療設備信息管理系統的設計與實現
基于屬性權重的Bagging回歸算法研究
計算機網絡自動檢測控制系統軟件開發設計
基于現場采集與云服務的流量積算管理系統研究
基于組合優化理論的體育彩票銷售量預測模型
基于DFT及諧波群泄露能量最小的電力諧波/間諧波分析方法
電子技術應用
非充分灌溉下精量灌溉決策方法研究
基于分布式貝葉斯網絡的多故障診斷方法研究
基于BP神經網絡和全相位快速傅里葉變換的電力系統諧波檢測技術研究
基于轉子磁場定向的永磁同步電機牽引控制策略
移動軌跡挖掘算法設計與系統實現
基于FPGA的高精度超聲波測距儀設計
基于CAVE的虛擬現實關鍵技術研究
面向業務組織的工作流技術及其協同機制電子系統設計與實現
變電站接地極電阻建模計算及特征分析
全日盲紫外成像探測儀光學系統設計
基于信息共享的圖書館空間及服務電子系統模式研究
基于改進半邊數據結構的計算機仿真3D建模平臺研究
基于傳輸線方程的多根非平行傳輸線串擾分析
基于ASD與LBS的移動農資物流配送系統研究
公司地址: 北京市西城區德外大街83號德勝國際中心B-11

客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com

電信與信息服務業務經營許可證:京icp證060024號

Dragonsource.com Inc. All Rights Reserved

icp

2 嵌入式Linux軟件架構設計

結合Qt應用開發框架和Flash開發技術,本文提出的嵌入式Linux軟件架構如圖1所示。

圖1中,UI界面基于Flash軟件設計,對于UI界面背景內容,可以單獨制作成圖片文件,導入至Flash工程舞臺即可,對于其他交互控件或動畫部分可以定制成影片剪輯(MovieClip)或按鈕(Button)等;UI交互腳本基于ActionScript語言開發,實現與外界的通信和UI界面信息的加載/更新;運行適配接口,基于JavaScript語言開發,對上實現與UI交互腳本之間的通信,對下實現與應用主程序之間的通信;應用主程序基于C/C++語言開發,實現基于Qt模塊庫的用戶個性化定制服務。

在嵌入式Linux環境中運行基于上述架構開發的應用程序時,首先需要在系統中安裝嵌入式Qt模塊庫和Flash控制庫(libflashplayer.so)。其中,Qt模塊庫用于應用主程序運行時系統支持庫,Flash控件庫用于在HTML頁面加載運行UI界面和交互腳本。嵌入式Qt模塊庫和Flash控制庫的安裝屬于系統配置范疇,以下主要介紹UI界面和交互腳本、運行適配接口和應用主程序的設計思路。

3 關鍵技術設計

3.1 UI界面和交互腳本設計

UI界面設計可參考Flash動畫[2]設計方法,只是此時界面元素的布局更多是基于幀,而不是時間軸。對于UI界面背景內容,可在PhotoShop等軟件中制作成圖片并導入到影片舞臺,其他交互控制或動畫部分,可基于基本控件、影片剪輯和按鈕對象方式自定制。

本文以文本框(TextBox)、按鈕(Button)和下拉框(ComboBox)為例,介紹UI控件及交互腳本的設計思路。結合應用實際,腳本采用ActionScript 2.0編程語言。

(1) 文本框(TextBox)。在舞臺中增加文本框,設置為動態文本,設置關聯變量名(如myVariable)。在時間軸中新建空白關鍵幀,選中該幀并打開動作面板,通過this.myVariable實現文本框內容的讀寫。

(2) 按鈕(Button)。在庫中新建按鈕,分別設置其彈起、經過、按下、點擊4個狀態顯示效果。使用時將其拖動至舞臺中,選中該對象并打開動作面板,通過on()函數實現鍵鈕事件觸發。

(3) 下拉框(ComboBox)。在庫中新建影片剪輯,在影片剪輯編輯模式下,通過文本工具設計顯示區域,通過按鈕對象設計下拉項,通過腳本語言控制下拉項的內容及其顯示效果。使用時將該影片剪輯拖動至舞臺中,設置實例名(如myComboBox),在時間軸中新建空白關鍵幀,選中該幀并打開動作面板,通過this.myComboBox訪問下拉框定義的變量和函數。

此外,UI交互腳本還應實現與HTML頁面文檔的數據交互。對于接收HTML頁面數據,只需在Flash文件嵌入至HTML頁面時,通過標簽(的子標簽)的FlashVars屬性指定;對于傳給HTML頁面數據,可通過間接調用HTML頁面JavaScript函數實現(通過getURL()或 ExternalInterface.call()方法)。

3.2 運行適配接口設計

由于應用主程序采用C/C++編程,UI交互腳本采用ActionScript編程,兩種語言在數據類型和通信接口上不一致。因此,設計運行適配接口邏輯,實現兩種語言環境的轉換適配。在與C/C++交互時,支持結構數據收發;在與ActionScript交互時,由于受Flash通信方式的限制,只支持字節數據收發?;谶\行適配接口的數據交互模式如圖2所示,運行適配接口的功能包括:

(1) 根據C/C++和ActionScript基本數據類型,定義兩者兼容的通信數據結構;

(2) 充當C/C++和ActionScript數據交互的“信使”,實現C/C++和ActionScript應用數據的接收和發送。當UI腳本發送字節數據至應用主程序時,接收數據并將其裝配成通信數據結構,再推送至應用主程序;當應用主程序發送結構數據至UI腳本時,接收結構數據并將其轉換成字節數據,再推送至UI腳本。

3.3 應用主程序設計

與運行適配接口交互是應用主程序的首要任務。運行適配接口的運行引擎是QtWebkit模塊,其層次結構如圖3所示。

圖3中,QWebView是加載/更新Web頁面文檔的視圖類,每一個QWebView實例中有一個QWebPage。QWebPage可以訪問這個頁面的文檔結構,它主要描述如框架集(Frames),瀏覽歷史和編輯內容操作等。Web頁面文檔是通過QWebFrame類展示的,每一個QWebPage擁有一個QWebFrame作為其主框架,而Qt與JavaScript互調正是通過QWebFrame的兩個函數實現。addToJavaScriptWindowObject()將QObject對象傳給JavaScript,這樣JavaScript就能調用QObject的public slots函數;evaluateJavaScript()通過函數Qt可直接調用JavaScript中的函數。

需要說明的是,QWebSetting提供了對QWebView開啟/關閉Plugins和JavaScript功能的配置方法,只有開啟Plugins功能才能運行Web頁面中的Flash文件,只有開啟JavaScript功能才能實現Qt與JavaScript互調,開啟方法為:

4 實例與測試

4.1 實例實現

基于上述設計思路,本文實現了一款嵌入式串口通信軟件,其主要功能包括設置串口參數,接收上位機數據,發送數據至上位機。

軟件UI界面設計中,主要涉及到的UI控件為文本框、按鈕和下拉框,UI交互腳本實現了用戶輸入的數據組織、加載/更新界面顯示,以及結構數據與字節數據之間的轉換等功能。

4.2 對比測試

以友善之臂Mini2440開發板[5]為嵌入式目標平臺,對上述實例進行測試。Mini2440自帶的Linux系統包括Qt/Embedded Linux(也稱Qtopia Core),本文實例可以在平臺上直接運行。結合Mini2440自帶Linux系統內置的串口助手,將兩款串口通信軟件進行效果對比,如圖4所示。經過實測表明,本文實現的軟件實例達到了串口設置和通信的功能,并且與Mini2440內置的串口助手軟件相比,在UI展現、用戶體驗等方面有明顯優勢。

5 結 語

本文研究的嵌入式Linux軟件架構具有層次清晰、模塊獨立、易于實現的優點,對嵌入式 Linux應用軟件的開發具有指導意義。作為下一步工作,研究針對通用控件的Flash制作方法,運行適配接口封裝定義,以及UI與程序分離設計的高效機制,提高軟件架構的適用性及團隊開發的效率。

參考文獻

[1] 范朋.基于Qt的嵌入式Linux系統GUI的研究與實現[D].北京:北京郵電大學,2011.

[2] 新視角文化行.FlashCS6動畫制作實戰從入門到精通[M].北京:人民郵電出版社,2013.

[3] 佚名.MFC與Flash聯合界面開發技術[EB/OL].[2012?06?07].http://kuantianxia.blog.51cto.com/1041305/891521.

[4] JASMIN B, MARK S.C++ GUI Qt4編程[M].閆鋒欣,曾泉人,張志強,譯.2版.北京:電子工業出版社,2010.

[5] 佚名.MINI2440用戶手冊[EB/OL].[2011?04?21].http://zhidao.baidu.com/share/bf3bb8a3707b20a684a89103629e91fd.html.

[6] 安峰.QT平臺上的動態可定制界面設計[J].單片機與嵌入式系統應用,2014,14(3):24?25.

通信與信息技術
試驗靶場無線通信系統綜合效能評估方法
基于.NET電子網絡技術的高??蒲泄芾硐到y設計研究
基于軟件通信體系結構的波形FPGA軟件設計方法
基于Qt和Flash的嵌入式Linux軟件架構設計
基于Android的跨斷層測距記簿程序的開發
物聯網中分布式監控和查詢系統仿真研究
互聯網平臺下的智能信息管理系統設計
面向中長跑體能測試的RFID設計與實現
基于物聯網的圖形化虛擬仿真實驗平臺設計
一種基于圓環冗余解析的抗旋轉與剪切攻擊的信息隱藏算法
改進的變誤差寬度變階數LMS算法
基于OpenCV的紫外成像檢測量化參數提取方法
基于神經網絡的體育商標識別模型
海量小差異圖像高精度挖掘算法設計
基于云計算的圖像分類算法
一種海洋監測數據采集器設計
基于開窗結構和寄生單元的雙陷波超寬帶天線
基于DPI技術的語音視頻流量監控系統設計與實現
計算機網絡安全可視化研究平臺設計與實現
基于BP神經網絡的網絡安全態勢預測研究
改進支持向量機的電子郵件分類
基于人工魚群算法優化神經網絡在網絡入侵檢測中的應用研究
測試·測量·自動化
基于分布式結構的圖書館信息檢索服務系統研究
基于人工神經網絡的圖書館服務質量評價研究
基于RSS技術的圖書館登陸系統研究
醫療設備信息管理系統的設計與實現
基于屬性權重的Bagging回歸算法研究
計算機網絡自動檢測控制系統軟件開發設計
基于現場采集與云服務的流量積算管理系統研究
基于組合優化理論的體育彩票銷售量預測模型
基于DFT及諧波群泄露能量最小的電力諧波/間諧波分析方法
電子技術應用
非充分灌溉下精量灌溉決策方法研究
基于分布式貝葉斯網絡的多故障診斷方法研究
基于BP神經網絡和全相位快速傅里葉變換的電力系統諧波檢測技術研究
基于轉子磁場定向的永磁同步電機牽引控制策略
移動軌跡挖掘算法設計與系統實現
基于FPGA的高精度超聲波測距儀設計
基于CAVE的虛擬現實關鍵技術研究
面向業務組織的工作流技術及其協同機制電子系統設計與實現
變電站接地極電阻建模計算及特征分析
全日盲紫外成像探測儀光學系統設計
基于信息共享的圖書館空間及服務電子系統模式研究
基于改進半邊數據結構的計算機仿真3D建模平臺研究
基于傳輸線方程的多根非平行傳輸線串擾分析
基于ASD與LBS的移動農資物流配送系統研究
公司地址: 北京市西城區德外大街83號德勝國際中心B-11

客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com

電信與信息服務業務經營許可證:京icp證060024號

Dragonsource.com Inc. All Rights Reserved

icp

猜你喜歡
串口通信
串口通信在智能家居監控系統中的應用
基于Python實現設備控制臺的集中控制和管理
基于OpenCV的室內照明智能控制系統設計與實現
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合