基于Qt.E的嵌入式工业监测轻型GUI构件库开发.doc_第1页
基于Qt.E的嵌入式工业监测轻型GUI构件库开发.doc_第2页
基于Qt.E的嵌入式工业监测轻型GUI构件库开发.doc_第3页
基于Qt.E的嵌入式工业监测轻型GUI构件库开发.doc_第4页
基于Qt.E的嵌入式工业监测轻型GUI构件库开发.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Qt/E的嵌入式工业监测轻型GUI构件库开发摘要:针对当前嵌入式工业监测系统图形用户界面(GUI)应用过程中存在的占用空间较大、可配置性差、实时性不强等问题,提出了一种基于Qt/E的嵌入式工业监测轻型GUI构件库实现方法。对工业监测技术的基本特点进行分析,对Qt/E基本库进行裁减,通过多线程技术提高了对监测数据采集、分析、显示的并行处理能力,从而使GUI的实时性、快速性得到保证。利用Qt内部通信接口,实现了无需回调的消息映射机制,提高了界面上下文切换速度,使GUI开发过程更加简单、透明。基于构件化思想,结合相关工业监测与诊断算法,利用基础C语言开发了面向工业监测的共享构件库,较好的解决了其跨平台适用性问题,并能够根据用户的具体需要求进行配置与裁减。工业现场实验证明,利用该构件库开发的GUI占用空间较小,实时性好,能够在Linux、uCOS等嵌入式平台环境下稳定运行,为工业监测系统交互性的提高提供了较好的技术支持。关键词:工业监测;Qt/E;实时性;多线程;跨平台中图分类号:TP206 文献标识码:ALightweight GUI Components Library Development Oriented to Embedded Industry Monitoring System Based on Qt/EAbstract:Aiming at some problems of embedded industry monitoring system (IMS) graphic user interface (GUI) such as large occupation space, poor configuration ability and low real-time performance, a kind of embedded IMS-GUI components library realization method based on Qt/E was brought forward. The fundamental characteristic of industry monitoring technology was analyzed, and the Qt/E basic library was cut out according to requirement of IMS. Using multi-thread method, system parallel processing ability for data collection, analysis and display was enhanced, and real-time performance and rapidity were guaranteed. By internal communication interface of Qt, the message mapping mechanism which would not require call-back function was realized, context switch speed was improved, and GUI development process would become simply and clearly. Based on modularization principle, combined some relative industry monitoring and fault diagnostic algorithms, GUI shared components library oriented to IMS was developed by primary C language, that could resolve the problem of cross-platform applicability and be configured and cut out for special demand of users. Industry experiments proved that GUI developed by the components library has little occupation space and high real-time performance, can stably run in the embedded platform environment such as Linux and uCOS, and supply powerful technical support for the interactivity of IMS.Key words:industry monitoring; Qt/E; real-time performance; multi-thread; cross-platform0 引言工业监测技术在工业生产中具有重要意义。随着工业生产规模的不断发展与扩大,要求工业监测系统必需具备功能强、实时性好、可靠性高、易于交互等性能,传统的工业监测技术越来越难以满足以上需要。但嵌入式系统技术的迅速发展为工业监测技术提供了强有力的支持,使面向工业监测的嵌入式系统技术成为当前工业监测领域的研究热点之一,而轻型图形用户界面(GUI)作为嵌入式系统的必要组成部分当然也在其中。因此,本文针对当前嵌入式工业监测系统GUI应用过程中存在的占用空间较大、可配置性差、实时性不强等问题,提出了一种基于Qt/Embedded(以下简称Qt/E)的嵌入式工业监测轻型GUI构件库实现方法,利用多线程技术提高了对监测数据采集、分析、显示的并行处理能力,并按照相关通用性设计,使其能够跨平台运行1-2。1 嵌入式GUI概述1.1 嵌入式系统技术嵌入式系统是计算机的一种应用形式,通常指埋藏在宿主设备中的微处理系统。它是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能3。因此,对于工业监测所要求的高实时性、快速性等基本性能,嵌入式系统技术与传统的计算机技术相比,在功能、通用性以及交互性具有独特的优势,在工业监测领域有很广阔的应用空间。1.2 GUI技术概述与分析由于嵌入式系统对实时性的要求非常高,因此其对于运行在它上面的GUI提出了更高的要求,即所谓的轻型GUI。嵌入式轻型GUI必须占用空间小、可裁减定制、运行速度快,而且要满足高可靠性、高性能。当前嵌入式轻型GUI的工具库有很多,诸如Microwindows、MiniGUI、Xfree86、Qt/E等等,下面就以上工具库作一下简要介绍:(1)Microwindows Microwindows 是Century Software的开放源代码项目,用于小型显示单元,通用性好,多种平台都可以支持它。Microwindows基于服务器/客户机(Server/Client)模式的分层设计,代码简单,运行速度快,占用资源少(大约在100150 K 字节),但其网络透明性不好,应用程序及说明文档较少。(2)XFree86 XFree86是一个可以免费重复分发、开放源码的X-Window系统,它能运行在多种硬件上,支持帧缓冲区体系结构,有丰富的在线文档以及易于扩展的API等。但其与专门为嵌入式环境设计的Microwindows相比需要内存较多4。(3)MiniGUI MiniGUI由魏永明先生开发,是中国人做得较好的自由软件之一。它是一种面向嵌入式或实时系统的图形用户界面支持系统,主要运行于 Linux 控制台,也可以运行在任何一种符合或兼容 POSIX 标准的系统上。结构小巧,可配置,而且移植性好5。(4)Qt 星球科技(Qt)是挪威Trolltech公司著名的商业化图形工具库,具有卓越的跨平台应用能力,可以方便的应用于目前流行的绝大多数操作系统,如Windows、Linux、Solaris、FreeBSD、QNX、HP-UX、Irix等。Qt按照应用环境的不同,可以分为X-windows的X11版本与嵌入式环境的版本Qt/E。Qt/E以原始Qt为基础,并做了许多出色的调整以适用于嵌入式环境,其层次结构如图1所示。Qt/E通过Qt-API与操作I/O设施直接交互,而且面向对象的体系结构使代码结构化、可重用并且运行快速。Qt/E作为嵌入式GUI的实现工具,支持帧缓冲(framebuffer)驱动,它可以在没有X-Server或X-Lib的支持的条件下直接写帧缓冲,节省了内存使用,提高程序的运行效率6。因此,鉴于Qt/E在跨平台、内存占用以及快速性等方面的优势,本文将其作为面向工业监测的嵌入式轻型GUI构件库的基础构建工具。图1 Qt/E软件层次结构2 轻型GUI构件库构架与开发环境搭建2.1 GUI构架设计 轻型GUI构架库设计的关键问题就是突出构件化理念。构件是具有一定的功能和结构,并符合一定的标准,可以完成一个或多个特定的服务的软件实体,可独立部署、可组装。采用构件技术的软件生产方式就是一种类似于“零部件组装”的集成组装式软件生产方式,它把零件、生产线和装配运行的概念运用在软件开发中,打破了手工作坊式的软件开发模式,而且采用构件技术可以实现软件复用、优化整合,可配置性好7。根据工业监测系统的基本需求,结合构件化思想,建立了本构架库的实体-关系模型,如图2所示。图2 构件库实体组成与关系依赖模型面向工业监测的轻型图形构件库,除了具备基本的图形显示以及控制交互功能以外,还需要具备实时数据管理能力,能够对数据进行相关处理,给监测设备的状态判断提供依据。整个构件库主要包括数据管理、分析计算、图形显示、系统控制四个实体模块。其中数据管理模块接收数据采集模块上传的实时数据包,根据既定的数据传输协议进行解包,分发给分析计算模块,同时提供历史数据回放与文件管理功能,实现实时数据与历史数据的对比分析以及数据文件的存储、查询与删除等操作。分析计算模块得到相应的监测数据后,通过滤波、FFT等算法对数据进行处理,将结果传送至图形显示模块。图形显示模块提供时域图、频域图、柱状图、轴心轨迹图、电池电量图以及静态参数六种基本图形,是整个构件库的核心,依赖于分析计算的数据结果,同时接收系统控制模块的控制信息进行界面切换。系统控制模块则提供系统设置、参数设置以及监测目标设备设置等功能。在满足工业监测基本要求的基础上,通过面向对象封装的方法尽量减小各模块之间的耦合度,增加其内聚性,并设计统一标准的功能参数接口,使各模块的开发实现并行进行。另外,本构件库以功能界面为单位进行封装,用户可以根据具体需要进行定制,并不需要了解内部结构与处理过程,大大增加了构件库的易用性。2.2 开发环境搭建在本构件库的构架方案与基本功能确定以后,接下来的必要工作就是本机搭建面向嵌入式系统应用的Qt/E交叉编译平台。交叉编译环境生成的可执行文件是不能在本机执行的,只能将其烧写到目标系统中才能查看运行情况,这使系统开发、维护相当不方便。所以科学的开发方案是在本机X11环境下模拟嵌入式目标平台并完成程序的编写与调试,通过交叉编译生成可执行代码。(1) x11虚拟环境X11环境下进行嵌入式系统模拟是一件有难度且非常繁琐的工作,而Qt提供了有效的模拟工具,即虚拟帧缓冲控制台(qvfb),它能够通过其几何尺寸以及色深配置模拟目前流行的绝大多数嵌入式显示器,较好的解决了这一问题。在将Qt/E镜像文件解压到$QTDIR目录,设置相应的环境变量,在配置时键入 qvfb 选项,编译完成以后,在$QTDIR/tools目录下就可以找到qvfb的可执行文件。这样,在生成Qt应用程序以后,执行时添加Qt网络服务器(QWS)选项就可以在qvfb控制台查看程序的运行结果了28。因此,通过qvfb可以实现GUI程序的即时开发与调试,大大提高了程序开发的效率,同时可以解决硬件资源使用竞争的矛盾,使整个构件库开发可以分模块并行进行。(2) 交叉编译环境交叉编译环境的搭建根据嵌入式目标的不同而有所差异,本文以Intel PXA-255系列ARM处理器为例进行相关描述。首先下载arm-linux工具链(toolchain)的相关镜像软件包(arm-linux-binuitls、arm-linux-glibc、arm-linux-gcc、arm-linux-knl)进行安装,修改环境变量。然后根据PXA-255的相关特性对qt/embedded进行配置: ./configure xplatform arm-linux-g+ shared no-xft no-qvfb depths 16 system-libpng system-libjpeg system-zlib vnc,以上配置属性包括对多平台、ARM体系结构、共享库以及图形图像的支持等。配置完成后生成Makefile文件,就可以键入make sub-src(简捷模式)进行编译,完成交叉编译环境的搭建。图3 开发环境搭建流程示意图3 轻型GUI裁减与诊断算法库的加载3.1 Qt库裁减Qt库的裁减是轻型GUI构件库设计实现过程中的关键环节,关系着构件库是否满足嵌入式环境的基本要求,对后续的诊断算法构件的添加有着重要影响。Qt库提供了很丰富的API函数,但嵌入式轻型GUI不会用到全部库函数,用到的只是其中的一部分,甚至是一小部分。因此完成构件库设计文档以后,就可以初步确定应该用到哪一些类,可以裁掉那些不会用到的类,以减小存储空间,提高程序的运行效率。工业监测对界面功能的要求较低,只需要基本绘图(点、线、面)与常用控件(按钮、文本框等)就可以满足要求,这给Qt库的裁减带来了很大的自由空间。首先确定QT库准备裁掉哪些组件,不要的组件都要定义相应的关闭宏。$(QTDIR)/ src/ tools/ qfeatures.h文件定义了裁减时所有的宏的嵌套关系。父宏开关若被定义,则相关的子宏开关都被定义,因此裁减时要明确有关宏的嵌套关系,这是一件费时且复杂的工作。$(QTDIR)/include/qconfig.h是Qt库编译时的配置文件,在其中定义的一些宏,定义了有关Qt组件是否参加编译。因为有关宏的形式都是类似于QT_NO_DIR,所以在qconfig.h文件中定义宏都是在裁掉有关的组件,而不是参加编译的组件。Qt库编译默认是最大库编译(约有7M),所有的裁减工作都是在这个基础上展开的(最小可以裁至630K)。编译裁减过的Qt库时,只需在configure命令之后用相应的qconfig.h文件覆盖本身的qconfig.h,再行编译即可3。本文选用Qt/E2.3.7版本,经过裁减后的Qt库占用空间为900K(包括多线程库文件与字库文件),在PXA-255(32M内存)与SM-44B0(2M内存)等嵌入式系统环境下运行良好,能够满足当前嵌入式环境的基本要求。3.2 qt库文件与诊断算法库的编译与加载(1)数字信号处理与诊断算法的封装数字信号处理与监测诊断算法为构件库的每个功能界面提供数据支持,是后台工作的核心内容。本构件库共涉及IIR滤波、FIR滤波、去零漂等预处理算法7种,时间序列分析、相关分析、轴心轨迹等时域分析法6种,FFT、加窗、功率谱等频域处理算法7种,静态统计参数值计算算法12种以及烈度振动等级判断规则等工业规范2种,利用面向对象设计方法,将以上4类算法写成4个类,每个类中的算法都通过统一的参数接口封装,并配有详细使用说明。由于算法库只用基础C/C+程序编写,经过编译后的算法共享库文件libdig.so的占用空间不足100K,能够较好的满足嵌入式环境的运行要求。而算法的运算速度以及在使用过程中的内存占用问题则需要通过不断的实验来进行优化。(2)库文件加载在Qt/E编译完成以后,在其lib目录下将会有其生成的库文件,其中名为libqte.so.2.3.7绿色可执行文件为编译生成的Qt库文件。除此之外还有三个链接,分别为libqte.so.2.3、libqte.so.2 与libqte.so。这三个链接十分重要,它们的源文件都是libqte.so.2.3.7。藉于屏蔽Qt的具体版本的需要,这三个链接才是程序编译连接以及执行是查找的对象,所以这三个链接缺一不可。编译后的可执行应用程序在执行的时候会调用动态共享库文件,所以如果在目标板中运行应用程序,必须将编译过的库文件下到目标板中去,放到/lib或/usr/lib目录下面,然后建立相关连接就可以了。为了防止下进去的库文件与系统的库文件相互干扰,可以单独建立一个目录,专门来存放编译的库文件。任意建立一个目录,将编译过的库文件拷贝到前面的目录下,然后建立链接:ln s libqte.so.2.3.7 libqte.so.2.3 ,依此类推。然后在修改/etc目录下的ld.so.conf文件,加入一行/root/lib,然后执行ldconfig命令就可以了。诊断算法库也是通过同样的方法来加载,只是不需要建立连接。图4 库文件裁减与加载流程4 多线程任务与分配4.1 工业监测与多线程多通道的实时数据采集、处理与显示是现代工业监测技术必须具备的功能,而且同时要求各个功能界面之间能够实现无时间间断的切换,并能够根据用户的具体要求实现历史回放与实时数据的对比分析以及大数据量的存储等操作。工业监测系统运行过程中的并行任务需求一般通过并发进程的办法来解决。在传统的UNIX模型中,当进程需要来执行某个占用一定资源且对当前任务有影响的任务时,它就fork一个子进程,让子进程去处理。但在fork调用过程中主要存在以下几个问题: 1) fork要求内存映像从父进程拷贝到子进程,所有进程资源要在子进程中复制一份,开销比较大。2) fork子进程后,需用进程间通信(IPC)方法在父子进程间传递信息,虽然由父进程准备好的信息容易传递给子进程,但是从子进程返回信息给父进程却比较困难,且容易产生僵尸进程,造成系统资源泄漏,而线程技术有助于解决这些问题。线程有时称为轻进程,在共享进程资源的条件下完成并行任务处理,线程创建的速度要比进程快好多倍9。Qt2.2以上的版本都提供了多线程支持,在配置时加入-thread选项,通过QThread类来实现。4.2 线程任务设计本构件库包括系统控制、参数配置、时域图、频域图、静态参数图、柱状图、电源管理、文件管理8个功能界面类,其中实时数据图形绘制与数据存储需要多线程处理。如图5所示,主线程启动以后,首先根据监测目标的相关特性进行通道参数、采样参数以及技术参数的配置,然后通过signal/slot消息映射机制启动各绘图界面线程。Signal/slot机制是Qt的核心特色,是区别于其他开发工具的最重要的标志之一,它利用其封装性替代了因映射回调函数产生的复杂函数指针。因此用户不必知道它的内容,就可以实现对象间的通信。Signal与slot作为类的普通成员出现,彼此之间可以通过静态函数connect()实现任意的互连,组成了强大的组件编程机制10。本文利用这一机制,根据用户选择唤醒相应的绘图进行实时监测以及数据存储等任务,需要切换时结束该线程,重新选择唤醒其它任务,这使消息传递路线更为明晰,可以获得较高的并行任务处理效率。图5 多线程任务分配流程示意图单个线程任务的运行以及状态转换过程基本相同,本文以时域图线程任务(见图6)进行相关描述。任务被选择以后进入初始化状态,使其各成员变量赋值并开辟相关内存空间,从数据分析模块获得时域数据进入处理状态进行显示。在这期间,如果有其它任务被选中,则该线程结束,启动其它任务;如果需要进行数据存储,则执行数据存储任务,当数据存储完成以后,该任务结束,等待其它选择信号。图6 时域图线程任务状态转换图5 应用实例与实验基于自主搭建的双CPU嵌入式实验平台(见图7),本文对构件库进行了比较全面的测试。实验平台分为上、下位机结构,上位机为基于PXA-255的HP5550 PocketPC,下位机为基于MSP430的实时数据采集卡。根据既定的数据传输协议,上、下位机通过串口通信进行数据传输与控制信息应答。首先在HP5550上移植了支持Qt/E的嵌入式操作系统Fimillar-Linux,然后将构件库与开发的应用程序下载至上位机系统。对应用程序的界面切换速度以及数据处理算法时间等进行了反复测试,其运行稳定,实时数据图形显示流畅,能够完成数据存储、文件管理等功能,较好的满足工业实时监测的要求。图7 双CPU嵌入式实验环境平台本文分别在Redhat Linux X11与Windos XP环境下对构件库的可移植性进行了跨平台测试。Linux环境下,基于本构件库,利用Qt提供的qmake工具对开发的应用程序进行编译。手写Makefile(编译引导文件)比较复杂而且容易出错,而qmake工具可以通过简单的项目文件.pro直接用来为不同的平台和编译器书写Makefile,这使编译、调试过程大大简化3。Windows环境下的开发比较简单,只需要借助于VC+集成开发环境与Qt插件就可以调用本构件库进行应用程序开发了。在Linux与Windows环境下开发的应用程序界面如图8、图9所示,证明本构件库具有较好的跨平台性能。图8 Linux环境下由Qt开发的嵌入式GUI界面图9 Windows环境下由Qt开发的嵌入式GUI界面6 结语(1)提出了一种基于Qt/E的工业监测嵌入式轻型GUI构件方法,并通过实验验证其有效性与易用性。(2)构件库占用空间小,切换速度较快,具有较好的跨平台性能,能够满足嵌入式系统环境的需要。(3)融合多种信号处理与诊断算法,使本构件库具有较强的数字信号处理与分析能力。(4)后续的研究工作将围绕构件库的运行占用空间优化与信号处理算法的集成完善等方面展开。参考文献:1 WANG Hai-qing. Industry process monitoring: wavelet and staticsD. Hang-zhou: Zhe-jiang University, 2001(in Chinese). 王海清. 工业过程监测: 基于小波和统计学的方法D. 杭州: 浙江大学, 2001. 2 Ahn S H, Sul D M, Choi S C et al. Implementation of lightweight graphic library builder for embedded systemC. Proceedings of 8th International Conference Advanced Communication Technology, 2006, 1: 166168.3 Pun K H, Moon Y S, Tsang C C et al. A face recognition embedded systemC. Proceedings of SPIE - The International Society for Optical Engineering, 2005, 5779: 390397. 4 Lv Q, Xia X Y. Developing an integrated desktop for GUI applications in embedded systemsC. Proceedings of the Fourth IASTED International Conference on Communications, Internet, and Information Technology, 2005: 6873.5 Yu X H, Chen Q Y, Li G Y. Transplantation and Software Development of MiniGUI Bas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论