基于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电子网络技术的高校科研管理系统设计研究
基于软件通信体系结构的波形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电子网络技术的高校科研管理系统设计研究
基于软件通信体系结构的波形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的室内照明智能控制系统设计与实现