嵌入式GUI系统论文

2024-07-01

嵌入式GUI系统论文(通用5篇)

嵌入式GUI系统论文 篇1

近年来, 嵌入式系统取得了迅猛的发展, 由于嵌入式硬件性能的不断提升, 使得在嵌入式设备上运行精美的图形用户界面成为可能, 同时消费类电子产品、智能手持设备迅猛的发展也对GUI产生了极大的市场需求。因此, 对于GUI的开发具有十分广阔的市场前景。

1、相关技术

1.1 嵌入式系统 (Embedded System) 的定义及特点

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统, 对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。因而, 嵌入式系统与通用型计算机系统相比具有低功耗、体积小、集成度高、高可靠性、高效率等特点[1]。

1.2 嵌入式系统图形用户界面的定义及特点

嵌入式系统图形用户界面 (Graphic User Interface) 作为嵌入式系统的一个重要组成部分, 不仅要实现普通GUI系统提供的功能, 如:输入输出功能、图形操作接口、窗口和控件集合、通信机制等, 还需要满足嵌入式环境对嵌入式系统的特殊要求。嵌入式环境下的系统要求简单、直观、可靠、占用资源小且反应速度快, 以适应系统硬件资源有限的环境。同时, 由于嵌入式环境的多样性和嵌入式硬件本身的特殊性, 跨平台、高移植性也是嵌入式GUI系统必须具备的特点。

1.3 嵌入式系统GUI框架定义及特点

框架是对特定应用领域中应用系统的部分设计和实现, 它定义了一类应用系统 (或子系统) 的整体结构。

GUI框架 (GUI Framework) 决定了一个系统的整体架构、开发难度、开发速度、可扩展性、健壮程度等一系列重要的内容。从小到只能显示简单图标、矩形, 仅能接收遥控器操作的嵌入式系统, 到能够显示复杂的树形列表、渐变图形控件, 能够接收触摸屏、键盘、遥控器等操作的复杂系统, GUI Framework在整个嵌入式系统中都发挥着举足轻重的作用。

嵌入式系统往往是一种定制设备, 它们对GUI的需求也各不相同。有的系统只要求一些图形功能, 而有些系统要求完备的GUI支持。因此, GUI也必须是可定制的。GUI在嵌入式系统或者实时系统中的地位将越来越重要, 这些系统对GUI的基本要求包括:一是轻型、占用资源少;二是高性能;三是高可靠性;四是可配置。这样, 就很有必要对嵌入式GUI技术进行分析研究, 为实际的开发选择提供可靠依据。而为了实现嵌入式GUI系统的上述四个要求, 作为嵌入式GUI的重要组成部分GUI框架 (GUI Framework) 的设计则显得尤为重要。

2、嵌入式GUI框架的整体架构

嵌入式GUI框架提供了在嵌入式GUI这个领域, 这个特定的应用场景下部分设计, 将GUI应用系统划分为类和对象, 定义类和对象的责任, 类和对象如何互相协作, 以及对象之间的控制线程。

由于嵌入式系统潜在的多样性和复杂性, 我们不可能设计出一套在不同规模的系统都适合的框架来, 我们把系统定位为拥有复杂GUI界面的嵌入式系统。当然, 设计中的一些原则和实现方式, 对于一些简单界面的嵌入式系统可能也能够适合, 但是在性能上可能会有所损失。但是其中的一些设计思路和设计思想, 可以在其他的嵌入式GUI框架中灵活使用。同时, 我们决定采用白盒方式的嵌入式GUI框架, 使得其裁剪和扩充变得更加容易[2]。

八十年代末以来, 随着面向对象技术成为研究的热点, 面向对象分析设计方法和面向对象编程都有长足的发展, 并产生了UML语言和相应设计模式。UML从其它方法和工程实践中吸收了很多经过实践检验的概念和技术, 而设计模式从工程实践中总结了大量解决问题的方法和模式。面向对象技术和OOA OOD/OOP也成为了当今主流的软件工程方法, 对于复杂系统的分析和设计更加有效。编译技术的进步, 使C++等面向对象语言的性能得到了很大的提高。软硬件技术的发展, 使得面向对象技术和嵌入式系统结合成为可能, 为发展新的嵌入式应用提供了更广阔的前景。由于嵌入式软硬件没有统一的行业标准, 因此嵌入式系统的开放性和可移植性成为设计的重点, 也是一个难点。C++良好的可移植性、先进的面向对象技术、UML建模语言和设计模式在GUI的分析和设计中, 成为首选的技术。

3、面向对象的嵌入式GUI框架 (OGFW) 的设计

OGFW (Object Oriented GUI Framework) 在整体上如图1所示分为三大部分Framework Presentation、Framework Core和Environment Abstract Layer。从整体架构上来看, OGFW的外部关联模块包括OS和Driver。各个部分的功能划分如下:

3.1 框架表现层 (Framework Presentation)

OGFW对外提供可显示的控件部分, 封装了常用控件的显示、处理等。这部分在遵循一定规则的基础上, 可以通过自定义来扩充新的控件。这部分是与环境无关的, 只与Framework Core部分存在交互, 不依赖于具体的操作系统、显示硬件和输入硬件, 可以不加修改的跨平台移植。

3.2 框架核心层 (Framework Core)

OGFW的主函数 (Main) 的处理部分, 担负着整个系统的启动、终了、事件的分发、页面 (控件) 的描画时机等功能。这部分使用输入抽象层 (Input Abstract Layer) , 显示抽象层 (Graphic Abstract Layer) 和操作系统抽象层 (OS Abstract Layer) 提供的接口, Framework Core部分也是不依赖于OS, 和硬件的环境无关的。

3.3 环境抽象层 (Environment Abstract Layer)

OGFW的环境抽象层部分, 这部分是完全与环境相关的的部分, 主要封装了与软硬件环境相关的部分, 这一部分存在的目的是为了对Framework Core部分隐藏输入输出和操作系统的具体信息, 保证该层以上的部分能够不加修改, 或者最少修改的跨平台移植。主要包括三个部分输入抽象层 (IAL) , 显示抽象层 (GAL) 和操作系统抽象层 (OAL) , 在跨平台移植的时候, 只需要考虑这部分的移植就可以了。

4、结束语

本论文主要通过研究现有的图形用户界面框架, 同时分析图形用户界面框架的性能、特点、移植性等问题。在此基础之上, 设计了自己的面向对象的嵌入式GUI框架OGFW。

摘要:本文主要关注嵌入式系统的GUI框架的设计, 通过分析GUI的特点, 设计了一个面向对象的跨平台的GUI框架。

关键词:图形用户界面,框架,OGFW

参考文献

[1].刘振兴.嵌入式技术实践教程[M].北京, 北京航空航天大学出版社.2005.20-30

[2].黄加红, 郑灵翔, 曾楠, 陈辉煌.嵌入式Linux图形用户界面实现[J].厦门大学学报 (自然科学版) .2005, (01) .

[3].李栋, 扬帆, 李正为.基于32位低端嵌入式系统的图像采集模块[J].电子设计应用.2007, (01) .

[4].刘玥, 李韶远.ARM嵌入式系统GUI开发研究[J].微计算机信息.2007, (14) .

嵌入式GUI系统论文 篇2

由于嵌入式系统对实时性、可靠性要求较高,这就需要嵌入式图形用户界面(GUI)具有占用空间小、可裁减定制、运行速度快等特性。当前嵌入式GUI的实现方案有很多,诸如Microwindows、MiniGUI、Qt/Embedded等[1]。Microwindows的通用性好,多种平台都可以支持它,但其网络透明性不好,应用程序及说明文档较少。MiniGUI是国内做得较好的自由软件之一,主要运行于Linux控制台,结构小巧、移植性好[2]。星球科技(Qt)是当前Linux操作系统上最普遍的图形开发工具库,功能强大,具有很好的可移植性,能应用于目前绝大多数操作系统。Qt按照应用环境的不同,可以分为PC机环境的X11版本(qtx11)与嵌入式环境的Embedded版本(qte)。Qt与其他GUI实现方案相比具有面向对象、元对象编译器(MOC)、信号槽(signal-slot)通信机制、丰富的API函数等特点。Qte以原始Qt为基础,并做了许多调整以适用于嵌入式环境。它可以通过API与I/O设施直接交互,能够支持帧缓冲(Framebuffer)驱动,因此具有很高的运行效率[3,4]。

鉴于qte在可移植性、运行效率等方面的优势,本研究将其引入到嵌入式GUI开发方面的研究中来,并对编译平台搭建、交叉编译环境建立及Qt库文件裁剪的关键技术进行相关描述。

1 Linux环境下的Qt编译平台

本机搭建编译平台是开发嵌入式GUI的必要工作。X11环境可以模拟嵌入式系统的运行状态,并在PC机上查看程序的运行结果,但其生成的可执行代码不能在嵌入式环境下执行,需要搭建面向嵌入式系统具体要求的交叉编译环境。合理的开发路线是在X11环境下完成程序的编写、调试,在交叉环境下编译生成可执行代码,然后导入目标系统进行测试。

1.1 X11虚拟环境搭建

用于嵌入式开发的qte是不能单独编译运行的。在此之前,需要编译qtx11,生成用户界面编译器(UIC)与虚拟帧缓冲服务器(QVFB),作为交叉编译环境的支持。因此,要先编译X11版本,才能编译嵌入式版本,其操作过程如下(如图1所示):

(1) 解压Qt镜像压缩文件,将其安装在/usr/local目录下。之所以把Qt安装在这个目录下,因为系统头文件默认的路径为/usr/local。

(2) 修改环境变量,令QTDIR=MYM/usr/local/qtx11、PATH=MYMQTDIR/bin:MYMPATH、LD_LIBRARY_PATH=MYMQTDIR/lib:MYMLD_LIBRARY_PATH。在进行环境变量赋值时要格外仔细,尤其是修改PATH值的时候。如果出错,程序在编译连接过程中会因为找不到Qt的相关支持文件而不能通过,更严重的情况下可能会打乱操作系统的命令路径,给系统运行带来不便。

(3) 进入qtx11目录,键入/configure命令对Qt进行配置。

(4) Qt的自由版,默认状态不支持多线程,如果想建立带多线程支持的库,则需要配置完成以后,键入make命令进行编译,用来创建库文件,编译例程和指南。这需要等待一段比较长的时间,一般在一两个时左右(视编译的版本而定)。如果键入make sub-src命令,只编译库文件,用的时间会少一些。

(5) 将编译生成的uic与qvfb可执行文件复制到qte的bin目录下。

(6) 修改环境变量,令QTDIR=/usr/local/qte,因为另外两个环境变量是引用qt路径的,只要修改第1个环境变量就可以了。

(7) 进入qte目录,对qte做如下配置:./configure-embedded x86-shared-qvfb,然后进行编译。

1.2 交叉编译环境实现

本研究的交叉编译环境面向运行于先进精简指令机(ARM)环境下的嵌入式Linux操作系统,其实现过程如下(如图2所示):

(1) 安装ARM-linux工具链的相关镜像文件:arm-linux-knl、arm-linux-glibc、arm-linux-gcc、arm-linux-binuitls,然后令PATH=/usrlocal/arm-linux/bin:MYMPATH。

(2) 将前面编译生成的uic文件拷贝到qte/bin目录下,这时uic文件的颜色可能会变成灰色,失去了可执行文件的属性,需要恢复其可执行属性。

(3) 对qte进行配置:./configure-xplatform arm-linux-g++-shared-no-xft-no-qvfb-depths 16-system-libpng-system-libjpeg-system-zlib-vnc。

(4) 配置完成将会生成Makefile文件,就可以键入make命令进行编译了。编译成功以后交叉编译环境就搭建完成了。

1.3 Qt库的裁减

Qt库提供了很丰富的API函数,但一般的嵌入式GUI程序不会用到全部库函数,用到的只是其中的一部分,甚至是一小部分。因此完成存文档以后,就可以初步确定应该用到哪一些类,可以裁掉那些没有用处的类,以减小存储空间,提高程序的运行效率。

首先确定QT库准备裁掉哪些组件,不要的组件都要定义相应的关闭宏。MYM(QTDIR)/src/tools/qfeatuers.h文件定义了裁减时所有宏的嵌套关系。父宏开关若被定义,则相关的子宏开关都被定义。所以裁减时要明确有关宏的嵌套关系。MYM(QTDIR)/include/qconfig.h是Qt库编译时的配置文件,在其中定义的一些宏,定义了有关Qt组件是否参加编译。因为有关宏的形式都是类似于QT_NO_DIR,在qconfig.h文件中定义宏都是在裁掉有关的组件,而不是参加编译的组件。Qt库编译默认是最大库编译(约有7 MB),所有的裁减工作都是在这个基础上展开的(最小可以裁至630 KB)。编译裁减过的Qt库时,只需在configure命令之后用相应的qconfig.h文件覆盖本身的qconfig.h,再行编译即可。

2 qte应用程序开发

2.1 程序文件编写与Makefile修改

Qte源程序一般应该包含以下文件:1个主程序文件(main.cpp)、数个源程序文件(source.cpp)与对应的头文件(source.h)以及用来生成Makefile文件的项目文件(xx.pro)。

Qt提供了qmake工具用来生成Makefile文件,大大简化了编程过程。而qmake的使用则需要编写项目文件xx.pro以及设置相应环境变量。项目文件存放了一些系统的描述信息,语法为shell命令格式,用来生成Makefile文件。一般一个相对完整的项目文件主要包含以下内容:①TEMPLATE=app模板变量,告诉qmake为这个应用程序生成哪种Makefile;②DESTDIR=c:helloapp为放置可执行程序目标的目录;③HEADERS=source.haa.h….为头文件列表;④SOURCES=mian.cppsource.cppaa.cpp。...为源文件列表;⑤TARGET=xx为可执行应用程序的名称;⑥DEFINES=QT_DLL为额外的预处理程序定义的列表;⑦CONFIG=qt warn_on release为编译器选项和被连接的库。

按照以上格式内容编写xx.pro文件以后,键入qmake命令,在当前目录下就会生成名为Makefile的文件。项目文件也可以命令实现,用qmake-project命令也可以生成默认的xx.pro文件。

2.2 设置qmake的环境变量QMAKESPEC

qmake工具可以支持多种操作平台与处理器体系结构。只要对系统变量QMAKESPEC进行修改就可以生成适应多种平台的Makefile文件。QMAKESPEC系统变量用来表明操作系统和编译器,如果是X11的虚拟环境则将其赋值为linux-x86-g++;如果是arm环境则将其置为linux-arm-g++就可以了。若直接用命令来实现,可以在shell下输入下述命令:①X11虚拟环境(qmake-spec/usr/local/qte/mkspecks/qws/linux-x86-g++-o Makefile*.pro);②arm-linux交叉编译环境(qmake-spec/usr/local/qte/mkspecks/qws/linux-arm-g++-o Makefile*.pro)。

2.3 编译执行

以上操作完成以后,就可以键入make命令进行编译。编译成功以后则生成与项目文件xx.pro同名的可执行文件。X11虚拟环境下运行时首先需要运行qvfb,并设置相应的几何尺寸及色深(一般为16),然后另开一个终端在当前目录下键入./xx-qws(帧缓冲服务器)查看运行结果。

ARM交叉编译环境下生成的可执行文件是不可以在本机执行的,只有将其下到目标板中才能执行。由于MOC并不能处理所有的C++语法,在C++的某些语法规则与MOC产生冲突的时候会发生编译错误,主要问题是模板类无法使用singal与slot。有时编译会通过,在程序执行时出现段落错误,这时没有相应的错误提示信息,查找错误原因就比较困难了。

常见的的错误主要是由以下因素引起的:①多重继承时,Qobject类没有被首先继承;②多重继承时,虚函数作为slot;③signal与slot不能使用函数指针作参数和friend关键字;④signal与slot不能使用带参数的宏定义;⑤signal与slot不能使用默认参数以及模板类型的参数。

2.4 汉字显示实现

Qte提供了对汉字的良好支持,支持16位的unicode字符集。本研究通过不断的测试,解决了在嵌入式环境中汉字显示的问题。下面就实现的过程做简要描述。

建立一个头文件,其核心内容如下:

#ifdef QTX11_VERSION

#include <qtextcodec.h>

#define GB(s)

(QTextCodec::codecForName("GBK")

->toUnicode(s))

#define AGB(s)

(QTextCodec::codecForName("GBK")

->fromUnicode(s))

#else

#include <qgb18030codec.h>

#define GB(s)

(QGb18030Codec::codecForName("GB18030")->toUnicode(s))

#define AGB(s)

(QGb18030Codec::codecForName("GB18030")->fromUnicode(s))

#endif

然后在应用程序中引用此头文件,就可以实现汉字的显示了。例如实现一个名为“停止系统”的单选按钮:

showRadioButton1=

new QRadioButton(GB(tr("停止采集系统")),setButtonGroup1, "showRadioButton1");

当然还要把编译生成的相应的字库文件烧写到目标板中。Qt交叉编译完成以后,会在qte/lib/fonts目录下生成大量的扩展名为.qpf的字库文件。为了节省空间,并不需要把所有的字库文件烧写到目标板中,只要将unicode的相关字库unifont_160_50.qpf烧写到目标板中就可以了。

2.5 图片的支持

在嵌入式环境中图片的支持可以提高图形用户界面的美观性与质量。虽然本研究在配置qt的时候加入了对图片支持的选项,但是程序在目标板运行时经常会出错,解决的方法是将相关的图片支持库文件烧写到目标板中,然后安装就可以了[5,6]。例如安装图标支持库文件,将libpng3_1.2.8-r0_arm.ipk烧写到目标板,存放到任一目录中,然后用ipkg install libpng3_1.2.8-r0_arm.ipk命令进行安装就行了。

2.6 应用实例

根据以上研究成果,本研究以Intel-PXA255-Linux为目标系统,开发了面向以上嵌入式环境的GUI系统,并将其成功应用于嵌入式机械数据实时采集系统。如图3所示,GUI能够较好地显示汉字与图片,并具有很好的友好性与易用性;通过较完备的测试案例证明,其具有较快的反应速度与很好的可靠性。

3 结束语

本研究提出了一种基于qte的嵌入式GUI开发实现方法。对XII环境下进行模拟编译环境、交叉编译环境的实现进行了详细描述,针对具体的嵌入式系统要求,较好地解决了嵌入式环境下的汉字显示与图标显示问题。应用实例证明,利用该方法开发的GUI反应速度快、占用空间小,且具有较好的稳定性。

摘要:针对当前在嵌入式图形用户界面(GUI)开发中存在的运行效率偏低、可移植性较差等问题,提出了一种基于Qt/Embedded的嵌入式GUI实现方法。详细描述了GUI开发所必需的X11虚拟编译平台搭建技术与交叉编译环境实现技术。根据具体嵌入式目标对Qt库文件进行了裁剪,实现了对汉字与图片的显示,并通过应用实例证明了该方法的有效性。

关键词:嵌入式,图形用户界面,信号与槽,交叉编译

参考文献

[1]AHN S H,SUL D M,CHOI S C et al.Implementation ofLightweight Graphic Library Builder for Embedded System[C]//Proceedings of 8th International Conference AdvancedCommunication Technology,2006:166-168.

[2]于孝辉,陈秋艳,李国义.嵌入式Linux下MiniGUI的移植及软件开发[J].辽宁工学院学报,2006,26(2):90-93.

[3]DALHEIMER M K,HANSEN S.Embedded developmentwith Qt/Embedded[J].Dr.Dobb s Journal,2002,27(3):48-53.

[4]贾小军,谭召均,胡旭东.基于UML的复杂嵌入式系统建模研究[J].机电工程,2006,23(1):33-36.

[5]赵毅,游有鹏.基于Qt/Embedded的嵌入式数控系统人机界面设计与开发[J].工业控制计算机,2008,21(4):68-71.

嵌入式GUI系统论文 篇3

Qt是一个跨平台C++图形用户界面应用程序开发框架, 1991年由奇趣科技完成开发, 之后迅速发展, 不断壮大, 现已升级到5.3版本。当今主流操作系统平台, 比如Linux、Windows等, 包括嵌入式平台都支持基于Qt的程序开发和运行。它既可以开发GUI应用程序, 也可以开发非GUI程序, 比如控制台工具和服务器。基于Qt的这些特性, Qt已经在跨平台软件开发领域得到了认可。

2 教改意义

《嵌入式GUI应用程序开发》是我院“卓越工程师计划”试点班的主干核心课程。该课程主要讲解以Qt为基础的GU程序设计开发。通过对该课程的学习, 学生不仅可以掌握嵌入式GUI的设计方法, 完成嵌入式GUI设计, 还可以在该门课程的学习过程中加深对前期课程的理解, 使学生具备软件工程应用人才所必须具备的知识和技能。它是由《C++程序设计》《数据结构》《操作系统》为前续课程和后续环节——企业实习两部分组成的。由此可以看出, 该门课程在学生的学习过程中起到了承上启下的作用, 不仅可以总结以前学习到的编程知识, 还为以后进入企业实习打下了坚实的基础。

3《嵌入式GUI应用程序开发》教学改革

本文主要从教学内容、教学方法、教材选用等几个方面改革《嵌入式GUI应用程序开发》课程教学的现状。

3.1 教学内容改革

教学内容是教学过程中的基础环节, 老师根据教学进度表安排授课, 授课内容以大纲教案为准。教学大纲在教学过程中占有举足轻重的地位, 它是教学的基础性纲领, 不能随意更改。而大纲的制订工作早在2年前就已经完成。Qt与其他基础性学科差异较大, 知识更新速度较快, 版本不断更新, Qt4.8是2013-07发布的, 而在2013-12就已经发布了Qt5.2版本。这就造成2年前制定的大纲教学内容不能涵盖当前最新知识点的局面。该门课程是在大三开设的, 导致学生大四毕业后运用的Qt相关知识与大纲制定的Qt教学内容相差4年。为了让学生及时学习到Qt的最新知识, 并且严格按照大纲执行, 应该适当增加Qt教学时长, 以便讲授老师能及时更新与Qt相关的内容, 在不影响现有教学内容的基础上适当增加一些与Qt相关的新知识的讲解。

3.2 教学方法改革

目前, 该门课程仍然采用传统的注入式教学方法, 即老师上课讲解, 学生听课记笔记。但是, 这种教学方法并不适合该门课程, 因为Qt是一门实践性较强的课程, 理论性的知识并不多, 它需要学生不断练习, 在实践中总结相关知识点, 这样才能真正掌握Qt。注入式教学模式培养出的学生缺少学习的积极性和主动性, 缺乏创造力, 缺乏实践动手能力, 导致他们毕业之后不能很好地满足就业岗位的需求。除此之外, 注入式教学课堂效果不好, 学生上课积极性不高, 课堂互动效果差, 很多学生在课堂上可以理解所讲授知识, 但是由于课下疏于练习, 知识点的遗忘速度较快。很显然, 传统的教学方法已经不能适应Qt教学模式。为了让学生更好地学习Qt, 需要给学生提供一个理论与实践紧密结合的学习环境, 最好能边听理论知识边动手练习。为了达到这种效果, 完全可以把Qt的所有课程时间全部放在实验室, 老师在教师机上边演示边讲解, 学生们一边听一边练习。如果学生有不懂的地方, 可以直接提问, 教师现场为学生解惑。这样不仅可以加深学生对知识的理解程度, 还能在老师的监督下锻炼学生的编程能力, 让学生在理解理论知识的同时, 也提高了编程能力。

3.3 教材选用改革

教材是否合适直接影响了教学效果。由于Qt比较年轻, 它不像其他的基础性学科那样有一些针对该门课程的经典性教材, 所以, 该门课程的教材只能从市面上流行的相关书籍中选取。而市面上流行的与Qt相关的中文书籍往往知识点也比较陈旧, 而英文书籍虽然内容比较新颖, 但对学生来说存在语言障碍, 难度较大, 不适合作为教材。另外, 由于这门课程的实践性比较强, 教材不能太偏重理论知识, 所以, 需要将理论与实践紧密结合起来。由于Qt技术在不断更新, 版本更新导致Qt库文件对外提供的部分接口发生了变化, 如果所选的教材更新不及时, 那么, 学生就不能及时了解到Qt最新的知识。此外, 选用教材时应注意教材实例的前后连贯性, 所列实例应尽量与当前企业实际需求相关联。鉴于教材内容都比当前Qt版本滞后, 所以, 不要局限于1本教材, 应该借助网络, 把Qt相关的最新知识揉进课堂教学中, 让学生了解到QT的最新动态。

3.4 提升教师的能力

为了更好地完成教学任务, 达成教学目标, 让学生更好地学习知识, 教师要不断提升自己的教授水平, 掌握Qt的最新知识, 紧跟Qt的变革和发展。为此, 教师可以在空闲时间积极、主动地与Qt相关企业建立联系, 争取了解到Qt的最新开发要求, 以便教师更好地安排实验课程。除此之外, 教师还可以参加与Qt相关的培训, 与Qt的相关团队建立联系。

3.5 考核方式和成绩评定方式改革

嵌入式GUI系统论文 篇4

关键词:嵌入式GUI,Linux,Qt/Embedded,半导体激光器

0 引言

Linux在台式机上的成功, 使大家看到了Linux在嵌入式系统领域中的辉煌应用前景。嵌入式Linux具有源码开放、硬件需求低、软件模块化、可随意配置免许可、可移植等特点, 符合工控领域可靠性、实时性、稳定性等要求。Qt是奇趣 (Trolltech) 公司开发的一套跨平台的应用程序开发框架, 拥有直观、强大的API接口和C++类库[1], 2000年发布的Qt/Embedded Linux版本可用于Linux嵌入式设备, Qt/Embedded Linux提供了自己的窗口系统, 并且可以作为X11的轻量级替代产品。半导体激光器具有体积小、重量轻、运转可靠、耗电少、效率高等优点, 作为一种新颖的激光光源, 已经广泛用于军事、医疗、通信、工业等领域, 如激光通信、激光雷达、激光手术、激光焊接。半导体激光器[2]的特性受驱动电流和温度的影响, 阈值电流随温度的升高而增大, 当达到阈值电流时输出光功率随注入电流成线性变化, 相同注入电流在不同温度下的输出光功率也不同, 温度的变化也会引起中心波长的漂移, 所以, 半导体激光器的控制包括对驱动电流的控制和工作温度的控制。半导体激光器驱动电源的控制方法多样, 利用Qt/Embedded开发的嵌入式图形用户界面能够方便地实现对驱动源系统的实时监测、控制、数据存储等功能。

1 开发环境的搭建

半导体激光器驱动电源的控制核心处理器采用Sitare系列ARM处理器AM3354, 其最高运行频率可达800 MHz, 集成了基于ARM Cortex-A8的微处理器单元 (MPU) , POWERVR SGXTM图形加速器, 可编程实时单元和工业用通信子系统, 保证系统在低功耗运行的同时拥有高性能。硬件结构如图1所示, 外接256 MB的SDRAM和2 GB的NANDFLASH;电源管理芯片TPS65217用于处理器的电源管理, 它能提供灵活的加电和断电时序并拥有电源正常输出、按钮监视器等附加功能;外接7寸LCD液晶显示触摸屏, 处理器内的LCD控制器集成了LCD接口显示驱动器控制器, 经过驱动电路后可直接连接LCD模块;AM3354处理器最多可支持6个UART, 系统通过串口与LD驱动源连接进行数据的传输。

嵌入式应用软件的开发属于跨平台开发, 由于目标机CPU和宿主机CPU拥有不同的架构, 需要构建一个交叉编译环境, 使在宿主机上开发出来的程序经过交叉编译后能够在目标机上运行。用来开发的计算机称为宿主机, 一般运行Linux操作系统。嵌入式设备属于目标机。这里使用的宿主机为安装了Ubuntu操作系统的X86计算机 (Ubuntu是一个以桌面应用为主的Linux操作系统) , 目标机为AM3354为处理器的嵌入式主板, 操作系统采用嵌入式Linux[3]。由于Qt/Embedded和Qt/X11有一样的API, 在开发嵌入式环境的应用程序时, 可以先在带Qt/X11库的宿主机上开发[4]。

在此安装的交叉编译器版本为arm-linux-gcc-4.4.3, 支持硬浮点运算。解压到某一目录下, 在系统启动文件/etc/profile设置交叉编译器环境变量, 最后导入环境变量, #arm-linux-gcc-v命令可以查看编译器是否添加成功。安装嵌入式Qt应用程序开发库, 解压Qt/Embedded库[5]到相应目录下并编译。在应用程序运行时, 要正确设置环境变量, 以使应该程序能正确调用安装目录下的库文件。

2 Qt/Embedded应用程序软件设计

Qt/Embedded软件体系摒弃了X lib库, 将外部输入设备抽象为键盘和鼠标事件, 采用帧缓冲作为底层图形接口, 应用程序可以直接写内核帧缓冲, 避免了使用繁琐的X lib/Server机制。系统应用程序开发架构[6]如图2所示。

Qt/Embedded应用程序设计有两种方式[7], 一种是用集成开发环境图形编程方式, 一种是代码编程方式。无论使用哪种方式都会涉及元对象系统。元对象系统是对C++进行扩展的一种机制, Qt使用这种机制创建了独立的软件组件, 它提供了关键的两项技术:信号-槽以及内省。内省功能对于实现信号和槽是必需的, 并且允许应用程序的开发人员在运行时获得有关QObject子类的“元信息”, 包括一个含有对象的类名以及它所支持的信号和槽的列表。信号和槽是Qt通信机制的核心。当一个特殊的事情发生时便可以发射一个信号, 而槽就是一个函数, 它在信号发射后被调用来响应这个信号, 通常一个信号对应一个槽, 一个信号也可以关联多个槽, 多个信号也可以关联到同一个槽上。

2.1 串口通信的实现

在Qt中并没有特定的串口控制类[8], 大部分使用第三方写的qextserialport类。该类包含两个类:Qext Serial Base类和Posix_Qext Serial Port类, 后者继承前者, 而Qext Serial Base类又继承自Qt软件自带的QIODevice类。在Qext Serial Base类中涉及到了一个枚举变量Query Mode, 它有两个值Polling和Event Driven, Polling指的是查询方式读/写串口, Event Driven是事件驱动方式。事件驱动方式就是使用事件处理串口的读取, 一旦有数据到来, 就会发出ready Read () 信号, 就可以关联该信号来读取串口的数据。

在事件驱动的方式下, 串口的读/写是异步的, 调用读/写函数会立即返回, 它们不会冻结调用线程。而查询方式Polling读/写函数是同步执行的, 信号工作在这种模式下是不起作用的, 但这种模式下开销较小, 可以建立定时器来读取串口的数据, 并将结果显示在Qt的图形用户界面上。这里采用Polling查询方式读/写串口。设置一个100 ms的定时器, 通过Qt特有的信号与槽机制, 将定时溢出信号关联到读串口槽函数上, 实现数据的实时采集显示。

程序流程如图3所示。首先新建一个串口类, 设置串口通信的属性, 最常见的属性设置包括通信端口、波特率、数据位、奇偶校验、停止位以及控制流等, 然后读/写串口。

每个设备端口在/dev目录下都有一个对应的文件, Linux下的文件用文件描述符来描述, 它指向内核中每个进程打开的文件记录表。串口资源的文件路径是/dev/tty O*, 因此对串口的操作就像对普通文件的操作一样, 部分操作程序如下:

2.2 软键盘的调用

文中设计的软键盘包括字母、数字的输入、大小写字母的切换以及退格、回车等功能。在Linux环境的Qt Designer下, 创建一个新的Widget, 将Buttons选项中的Push Button按键拖入到软键盘区域内, 然后根据需要修改每个按键上面的文本属性和名字属性。

软键盘的实现是基于信号与槽机制[9]。利用Qt的多信号映射机制, 首先使用QSignal Mapper类来捆绑不同按键所发送的一系列无参数信号, 并将其转化为有参数的信号, 实现一个函数可以响应不同按钮的功能;然后需要建立每一键值对应的信号与槽之间的关系connect (ui->push Button, SIGNAL (clicked () ) , &mapper, SLOT (map () ) ) ;最后将所有的字母和数字通过多信号映射连接到槽函数中, 将键值传递给焦点控:connect (&mapper, SIGNAL (mapped (QWidget*) ) , this, SLOT (buttonClicked (QWidget*) ) ) , 当有按键按下时, mapped (QWidget*) 信号会触发button Clicked槽函数, 在button Clicked函数中发送按键的ASCII码值信号调用send Character (QChar) 槽, 从而实现正确的键值输入。界面设计如图4所示。

Qt设计师窗口部件简单有限, 某些情况下要自定义窗口部件。它有两种方法:改进法和插件法。插件法需要创建一个插件库, 它为可选的额外功能提供了一个特殊接口。Qt设计师运行时可以加载这个库, 并且利用该库创建窗口部件的实例, 本设计自定义了三个窗口部件QMeter、thermometer和led。

3 程序的移植和发布

安装了交叉工具链以及经过交叉编译的Qt/E库后[10], 就可以将前面编辑好的应用程序进行交叉编译生成可执行二进制文件, 然后发布到嵌入式控制板中。另外, 在发布之前需要先移植tslib和Qt/E库, tslib是电阻式触摸屏用于校准的一个软件库, 是一个开源的程序, 能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能, 通常作为触摸屏驱动的适配层, 为上层的应用提供了一个统一的接口。解压根文件系统到home路径下, 复制编译好的tslib、Qt/E库文件到根文件系统中, 最后导出相应的环境变量。应该程序可以以界面图标的形式运行, 这时, 就需要自己制作启动器文件, 在forlinx/web/lighttpd/webpages/apps目录下新建current.desktop文件, 然后编辑该文件:

current.png是一个32×32的PNG图标文件, 可根据自己的需要制作并存于相应路径下。交叉编译生成的二进制文件current放于forlinx/qt/bin目录中。current.sh是编写的shell脚本, 当用户点击界面图标时会自动执行脚本文件里的命令:

如果需要开机自动运行程序, 可以编辑启动时的执行文件/etc/init.d/rc S, 将启动程序路径和可执行应用程序名添加到这里, 就可以实现系统启动时程序的自动运行, 在嵌入式主板上运行效果如图5所示。

4 结语

嵌入式系统的实时性、高可靠性以及友好高效的GUI被广泛用于工业控制当中。基于Qt/Embedded设计的嵌入式控制界面实现了与单片机的串口通信、文字的编辑、控件的载入和显示、数据的保存记忆、软键盘的调用等功能。本文根据光纤激光器泵浦源的特点, 以设计泵浦源驱动的人机交互界面为前提, 结合用户需求和Qt/Embedded特点来开发嵌入式控制面板。详细介绍了基于Qt/Embedded的嵌入式应用程序的开发过程, 并成功移植到嵌入板中控制LD正常工作。

参考文献

[1][加拿大]BLANCHETTE Jasmin, [英]SUMMERFIELD Mark.C++GUI Qt4编程[M].北京:电子工业出版社, 2010.

[2]赵忠伟, 吴广业.半导体激光器驱动电路设计[J].中国电子科学研究院学报, 2011 (6) :657-660.

[3]陈乐, 唐波, 卢力.嵌入式环境下串行帧通信的设计与实现[J].现代电子技术, 2010, 33 (23) :60-62.

[4]汤伟, 李强.Qt/E的嵌入式Linux GUI研究与实现[J].计算机应用与软件, 2011, 28 (10) :260-263.

[5]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社, 2008.

[6]杨柳, 岳坤, 庞和明, 等.Qt/Embedded及嵌入式Linux在智能监控系统控制中的应用[J].计算机应用, 2010, 30 (1) :289-291.

[7]赵莹, 徐大平, 吕跃刚.基于Qt/Embedded的嵌入式控制界面开发[J].微计算机信息, 2009, 25 (11) :36-38.

[8]刘依晗, 丑武胜, 董明杰.基于QT/E串口通信的手持监控器[J].现代电子技术, 2013, 36 (20) :110-112.

[9]谢芬, 潘丽, 刘守印.基于QT/E的嵌入式Linux系统的软键盘实现[J].电子设计工程, 2012, 20 (5) :177-179.

嵌入式GUI系统论文 篇5

软件系统的用户接口有两类[1], 即命令驱动方式的交互式问答接口和事件驱动方式的图形用户接口 (GUI) 。通常在开发一个实际的应用软件系统时会尽量做到界面友好, 最常使用的方法就是使用图形用户界面。图形用户界面用各种图形对象, 如图形窗口、图轴、菜单、文本框等构建的用户界面, 是人机交流的工具和方法。利用用户界面, 用户可以直接与计算机进行信息交流, 不需了解应用程序究竟是怎样执行各种命令的, 而只需了解可见界面组件的使用方法, 通过与界面交流就可以使指定的行为得到正确执行。

图形用户界面具有很强的交互性, 在这样的一个良好的用户界面中可以方便地进行通信系统的参数设置, 可以同步显示通信信号经过每一步处理后的波形, 能够使用户更为方便地对无线通信系统进行软件设计和功能分析。

1 无线通信系统仿真模型的构建[2]

通信的目的就是传输信息。通信系统的作用就是将信号从信源发送到一个或多个信宿。 因此, 按照信道中传输的是模拟信号还是数字信号, 相应地把通信系统分为模拟通信系统和数字通信系统。

(1) 模拟通信系统模型

信源发出的原始电信号是基带信号, 基带是指信号的频谱从零频附近开始, 如语音信号 300~3 400 Hz, 由于这种信号具有频率很低的频谱分量, 一般不宜直接传输, 这就需要把基带信号变换成其频带适合在信道中传输的信号, 并在接收端进行反变换。完成这种变换和反变换通常利用调制器和解调器。经过调制以后的信号称为已调信号, 已调信号有三个基本特征:携带有用信息;适合在信道中传输;信号的频谱具有带通形式且中心频率远离零频。

(2) 数字通信系统模型

数字通信系统是利用数字信号来传递信息的通信系统。数字通信涉及的技术问题很多, 其中主要有信源编码/译码、信道编码/译码、数字调制/解调、数字复接、同步以及加密等。

2 无线通信系统信号处理的GUI设计

通常情况下, 实现GUI设计有两种方法[3]:使用Matlab自身提供的图形用户界面设计向导 (Graphics User Interface Design Environment, GUIDE) , 或者是使用全脚本编程。利用GUIDE进行图形用户界面设计, 向导会自动生成一个fig文件, 及一个包含fig中放置控件相应回调函数的M脚本文件。利用全脚本编程实现, 由于 Matlab自带demo, 包括按钮、文本标签、编辑文本框、列表框等, 通过阅读M文件程序代码可以直观而快速地掌握GUI设计的技巧。采用全脚本实现, M文件代码可重复使用, 可生成非常复杂的界面, 可方便地在句柄中存取数据, 可将创建对象代码与动作执行代码很好地结合起来。对于GUI设计, 针对不同的情况来确定使用GUIDE还是全脚本, 也可以考虑两者的结合使用来发挥各自的优势。

3 基于Matlab的无线通信系统GUI设计与实现

本文采用Matlab的GUIDE进行通信系统仿真平台的设计与实现[4], 对通信信号进行实时处理。GUIDE是一个专门用于GUI程序设计的快速开发环境, 包括控制面板、属性编辑器、事件过程编辑器、对齐工具和菜单编辑器五个图形用户界面编辑工具。用户利用该向导可以将图形界面的外观, 包括所有的按键及图形的位置进行确定, 然后利用Matlab的回调函数编辑器来编写完成约定任务的函数代码, 从而方便快捷地设计出一个图形用户界面。GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中, 同时还能够生成包含GUI初始化的组建界面布局控制代码的M文件。这个M文件为实现回调函数提供了一个参考框架。

通信信号处理的GUI设计一般分为以下五个步骤:

(1) 确定GUI对象, 通过设置GUIDE应用程序的选项来进行GUIDE组态

在面向对象的系统分析 (OOA) 过程中, 从信号处理的系统中抽象出面向对象编程 (OOP) 的类和对象。对话框的选项包括窗口重画行为, 命令行访问、生成文件选择、生成回调函数原型、使用系统背景颜色配置等选项, 通过不选或选中它们来实现图形用户界面的整体组态设计。

(2) 使用界面设计编辑器进行GUI界面设计

Matlab界面设计编辑器组件平台中包含所有能够在GUI中使用的用户界面控件, 即按钮、单选按钮、编辑框、静态文本、列表框以及弹出式菜单等。一个GUI中可以存在一个或多个以上的GUI组件, 使用时要注意保证各个组件的名称或属性有所不同, 以便区分。用户可以用属性检查其对各组件的属性进行设计。

(3) 理解应用程序M文件中所使用的编程技术

Matlab可以通过创建应用程序M文件为GUI控制程序提供一个框架。该框架是一种高效而坚固的编程方法, 即所有代码均包含在应用程序M文件中, 这就使得M文件只有一个入口可以初始化GUI或调用相应的回调函数以及GUI中希望使用的任意帮助子程序。对应用程序M文件代码进行详细分析, 通过了解GUIDE创建应用程序M文件的功能, 从而实现GUI的规划。

(4) 编写用户GUI组件行为响应控制 (即回调函数) 代码

控制GUI组件响应用户的行为是GUI的实现任务之一。Matlab的GUIDE可以根据用户GUI的版面设计过程直接自动生成M文件框架, 这样就简化了GUI应用程序的创建工作, 用户可以直接用这个框架编写自己的函数代码。

(5) 保存并执行GUI

激活GUI界面, 确保界面符合预定的要求, 设计满意后保存GUI。运行通信信号处理的仿真平台的应用程序M文件, 对其进行反复的调试, 使界面及用户空间符合系统预定的功能。

本设计利用Matlab自身提供的工具箱Toolbox中各种通信信号处理函数[5]对信号进行处理, 然后通过GUI的组件编程实现各个模块的调用和链接, 从而最终实现基于Matlab的通信信号处理系统仿真平台的设计。该仿真平台能够在多种信源及多种调制方式下进行信号传输的仿真, 还给出各种调制方式下的基带信号、已调信号的波形及已调信号的频谱等, 最后, 对通过加性高斯白噪声信道的通信信号数据流进行各种逆向操作处理 (解调、译码等) 恢复出源信号。以数字通信系统为例, 通信信号处理流程如图1所示。

通信信号处理的仿真对于无线移动通信的研究具有重要意义, 具有界面友好、良好扩展性的图形用户界面可以使用户更全面深入地理解通信系统的工作原理。本设计旨在设计一个通用性强、操作简单、功能较全面的通信信号处理仿真平台, 能够实现针对不同信号类型的模拟数字发送、接收, 及一系列信号处理, 如调制解调、编码译码等。本文利用软件模块代替传统通信信号处理系统中的硬件结构, 在很大程度上克服了传统通信系统硬件结构复杂、不通用及系统不稳定等局限性, 对于更好地实现无线通信传输具有重要意义。

3.1 无线通信系统模块的GUI设计与实现

无线通信系统的GUI设计, 首先要根据无线通信系统的功能需求, 将系统分为多个模块, 确定各个模块的功能部署。再次, 以每个模块为单位, 部署各个模块下的功能配置, 和GUI界面的组成, 以完成各个模块下的功能GUI, 最后利用M文件编程实现各个系统模块之间的调用和链接。

根据发送的信号形式的不同, 将通信信号处理的仿真系统模型分为模拟通信信号用户界面子类和数字通信信号用户界面子类, 在模拟和数字通信信号用户界面子类下, 再分别细分为发送端和接收端。另包含信道模型用户界面。

3.2 通信信号处理的GUI设计与实现

基于Matlab的无线通信系统中通信信号处理功能的实现, 是利用Matlab自身提供的工具箱Toolbox中各种通信信号处理函数对信号进行处理[6]。通信信号处理的GUI设计和实现, 是基于无线通信信号处理系统各个细分模块的功能要求, 选取工具箱中适宜的信号处理函数, 根据函数的输入、输出各种参数类型要求, 在GUI界面中利用按钮、单选按钮、编辑文本框和列表框等界面控件来实现各种调制/解调方式、编码/解码方式和信道类型的选择, 和各种输入参数的设定。界面既要实现与用户交流的友好性, 还要更加注重界面的简洁性和系统的功能性, 将内部功能部署和外部实体界面有机结合起来, 使无线通信系统的用户图形界面得以实现。

4 仿真结果

4.1 模拟通信信号处理的GUI设计与实现

4.1.1 模拟信号发射端

模拟信号发送端包括四个模块[7]:

(1) 信号输入模块。对于输入到系统中的基带信号, 既能以工作空间中存在的变量作为输入, 也可以选择实时采集的信号作为输入, 如语音信号, 利用单选按钮进行相互屏蔽选择。当选择实时采集的语音信号时, 点击“打开”按钮, 弹出打开文件对话框, 程序设置对wav格式的文件进行筛选。

(2) 调制信号参数设置, 包括载波信号频率设置及常用模拟调制方式的选择 (如AMDSB-SC, AMDSB-TC, AMSSB, FM, PM等) , 调制功能的实现是利用Matlab的Communication Toolbox工具箱中的模拟调制函数[8]来实现。

(3) 发送端的控制面板, 可以设定采样频率等参数, 在M文件程序编写时利用句柄函数实现各项参数的读取, 利用mat文件实现不同M文件之间各个变量的参数传递, 并且可以按钮控制“开始通信”、“调制回放”等功能控件, 点击不同的按钮控件, 通过调用不同的回调函数来实现不同的通信信号处理的功能:点击“开始通信”按钮, 弹出信道设置对话框, 选择传输信道类型, 设定信噪比等参数。对于瑞利衰减信道, 还需设置最大多普勒频移等参数;点击“调制回放”, 界面会回放调制的全过程, 通过动态图像使用户更直观深入地了解调制处理过程。

(4) 基带信号、已调信号及其频谱的图像显示, 利用axes来声明和显示二维图像。

以上四个模块能够方便简单地修改通信信号处理过程中的各项参数, 观察数据模板中选定的输入变量, 并对其进行时域和频域分析。

图2为语音信号AMSSB调制的仿真结果。点击“调制回放”, 可得到调制过程的动画回放, 使用户深刻形象地理解调制过程, 调制回放图形如图3所示。

4.1.2 模拟信号接收端

模拟信号接收端采用三大模块:

(1) 解调控制面板, 有五个按钮控件, 分别执行信号的接收、解调、解调过程回放、基带信号时域波形对比和已调信号时域波形对比。

(2) 接收信号的信息显示, 可以显示发送端对信号进行的各种参数设置, 利用句柄函数读取发送端保存在mat文件中的变量参数。

(3) 信号图像显示, 继承了发送端信号图像同步显示和回放的优点, 并且可以通过点击信号对比按钮, 使用户直观地观察通信系统中基带信号和已调信号发送和通过通信信道失真后的时域波形对比。

信号通过信道后, 在模拟信号接收端进行信号接收和解调逆向操作, 可得解调信号的波形。图4对应的是图2信号通过加性高斯白噪声信道解调后得到的仿真结果。解调回放波形如图5所示。

4.2 数字通信信号处理的GUI设计与实现

4.2.1 数字信号发射端

数字信号发送端包括四个模块:

(1) 信号输入模块, 同模拟发送端一样, 输入到通信系统的模拟信号既可以是工作空间中存在的变量, 也可以是实时采集的信号, 如语音信号。

(2) 编码模块, 分为信源编码和信道编码。信源编码, 对于输入的模拟信号进行采样、量化、编码 (常用64 Kb/s脉冲调制PCM) 得到数字基带信号;信道编码, 包括具有前向纠错功能的 (7, 4) 汉明码、 (15, 7) 循环码等, 并显示纠错码的纠错位数。信源编码功能的实现是利用M文件编辑器编写合适的信源编码函数;信道编码功能的实现是利用Toolbox中提供的信源编码函数[9], 首先对信源编码后的信号进行合适的矩阵转换, 以符合信道编码函数输入变量的形式, 再进行编码。

(3) 数字信号传输模式的选择:数字基带传输、数字带通传输。选择适宜的调制方式 (ASK, PSK, QASK, FSK, MSK, QAM等) [10], 并设置各种调制参数。

(4) 信号图像显示模块, 对输入到通信信号处理系统中的模拟信号, 显示其时域、频域波形, 及信源编码后的PCM码流波形。

点击 “开始通信”按钮, 弹出信道参数设置对话框, 进行信道选择和各项参数设置。发送端界面如图6所示。

4.2.2 数字信号接收端

数字信号接收端主要完成对接收信号进行解调、译码等逆向处理操作, 可实现不同调制解调方式下通信信号处理系统的分析和仿真。同样采用三大模块:

(1) 解调控制面板, 包括六个按钮控件, 分别执行信号接收、解调、信道解码、信源解码、时域图形对比、PCM码流图形对比等功能。

(2) 接收信号的信息显示, 可以显示发送端对信号进行的各种参数设置。

(3) 信号图像显示。

图7对应的是图6双声道语音信号通过AWGN后解调解码的仿真结果。

5 结 语

本设计基于面向对象技术, 提出了一种用于通信信号处理系统的仿真图形用户界面设计方案与实现技术, 并搭建了相应的通信系统仿真平台。利用GUI来实现通信信号处理仿真系统, 界面简单友好, 参数设置灵活, 并且在仿真过程中能随时看到信号处理的文字和图形描述, 便于更好的实时处理和进一步的预测和分析, 使用户能很快地掌握该平台的功能和使用方法, 便于学习和使用;同时开发的通信系统仿真平台具有良好的开放性, 可以不断地完善和扩充, 便于研究工作的延续。结构开放和全面可编程的软件无线电技术, 利用软件模块代替传统通信信号处理系统中的硬件结构, 在很大程度上克服了传统通信系统硬件结构复杂、不通用及系统不稳定等局限性, 对于更好地实现无线通信传输具有重要意义。

参考文献

[1]MathWorks.Matlab build GUI图形用户界面设计手册[Z].

[2]樊昌信, 曹丽娜.通信原理[M].6版.北京:国防工业出版社, 2007.

[3]陈垚光.精通Matlab GUI设计[M].北京:电子工业出版社, 2008.

[4]施晓红, 周佳.精通GUI图形界面编程 (Matlab开发丛书) [M].北京:北京大学出版社, 2003.

[5]张志涌, 杨祖樱.Matlab教程[M].北京:北京航空航天大学出版社, 2006.

[6]张秋红, 李玉忍.用Matlab制作图形用户界面[J].电脑开发与应用, 2003, 3 (16) :11-14.

[7]郭文彬, 桑林.通信原理——基于Matlab的计算机仿真[M].北京:北京邮电大学出版社, 2006.

[8]陈永春.从Matlab/Simulink模型到代码实现[M].北京:清华大学出版社, 2002.

[9]邓华.Matlab通信仿真及应用实例详解[M].北京:人民邮电出版社, 2003.

上一篇:SNS的应用下一篇:初中历史课教学的导入