时间:2022-11-09 23:28:04

【关键词】MATLAB;GUI;数字信号处理
1.引言
数字信号处理,是现今应用成效最显著、应用领域最广的新科学之一,国内外各高校均开设了数字信号处理课程。这门课程相应的特点是:公式特别多、性质的推导复杂繁琐、概念性的东西比较多,还需要以信号与系统等诸多课程为基础,被很多同学认为大学最难的课程之一,学生因跟不上老师的进度和本身对学习内容的理解不到位而对这门课程失去兴趣。传统的教学模式已经远远满足不了新时代教学的需求,在计算机技术快速发展的今天,计算机辅助教学己经逐步成为教师授课的主要方式。MATLAB为数字信号处理课程的教学提供了很大的实验帮助。很早之前,国外就开始把交互式软件MATLAB用于数字信号处理的教学中,并采用功能强大的系统开发平台。本文利用MATLAB的图形界面设计工具(GUI),以数字信号处理理论知识为基础,设计了与课堂教学、实验内容相配套的辅助工具。该辅助工具可用于《数字信号处理》课程的实验辅助教学、课堂教学演示,也可作为学生课后自学平台,真正的将实验内容融入教学过程中。
2.MATLAB GUI简介
GUI是当今计算机软件的发展趋势。MATLAB为表现其基本功能而设计的演示程序demo是使用GUI的最好范例。MATLAB全面支持GUI编程,可自行设计窗口、菜单、对话框、滑动条等。在MATLAB的命令窗口中运行guide,即进入交互式编程。Guide可以根据用户GUI的版面设计过程直接自动生成M文件框架,这样就简化了GUI应用程序的创建工作,用户可以直接使用这个框架来编写自己的函数代码。
GUI设计可以采用两种方法,一种是利用GUIDE工具进行设计。这种方法的优点是上手容易;缺点是对于有些复杂功能的实现比较困难。另一种方法是基本代码法,即在M文件中用MATLAB代码写出所有的图形对象控件所对应的代码,通过各个参数的控制可以灵活地实现所需要的功能。这种方法的缺点是上手困难;优点是功能强大,可以实现许多复杂的功能,而且调试程序也比较容易。
3.基于MATLAB GUI的数字信号处理仿真平台的构建方案
5.结论
此仿真平台的制作是为了能够更方便地进行数字信号处理的辅助教学,此平台使得教学的内容更加直观,理论知识更容易理解,所以能够有效地提高教师授课的效率。通过此仿真平台,不仅能够激发学生对数字信号处理课程的学习兴趣,还能够加深对理论公式等知识的理解。此外,有了这样一个可以在计算机上操作的仿真平台,不仅使学生容易掌握那些比较抽象的数字信号处理知识的内容抽象,而且使教师的教学内容更形象化、生动化。本系统拥有友好的MATLAB GUI界面设计,用丰富的画面、简洁的文字将数字信号处理中抽象的实验内容展现在学生面前,提高了学生的学习主动性和积极性。
参考文献
[1]程佩青.数字信号处理(第三版)[M].北京:清华大学出版社,2007.
[2]罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社,2002.
【摘要】针对传统设计方法过程复杂,逻辑性差,修改不便的特点,利用图像用户界面的人机交互性,实现了基于matlab/GUI的装载机设计平台的搭建与实现。选取铲斗设计为例,阐述GUI的具体设计过程。结果表明,设计平台运行良好,设计过程清晰简明,此平台作为理论教学的辅助手段,可加深学生对设计过程的理解和运用,也可作为工程设计人员的辅助设计工具。
【关键词】装载机设计 人机交互界面 matlab/GUI
一、引言
随着社会发展与经济水平的提高的需求,工程机械呈现种类多,覆盖面宽,功能齐全的蓬勃发展局面。而设计作为整个机械生产流程的第一步可以说是至关重要的,但是传统的设计过程基本没有用户界面,或者仅仅靠简单的文字信息和 屏幕显示与用户进行交互,过程繁杂、工作量大,容易出现较大的错误且不便于修改,这极大的制约着设计师推出更优秀的产品。而GUI设计具有用户界面友好性,图标识别平衡性,图标功能的一致性等特点,能够建立起友好的交互界面便于在设计过程中与用户进行交流。
因此本文利用MATLAB强大的图像处理和图形表现能力,良好的GUI设计环境,针对工程机械的设计特点,以装载机为例,将GUI设计应用于其设计过程、关键参数确定等的设计过程,来建立良好的人机交互界面,从而在繁杂的设计过程中,减轻设计人员的工作量,降低设计的错误率,从而提高工作效率。
二、设计思路
设计平台的布局是先设计GUI总界面,然后设计子界面,再在子界面上设置按钮、菜单、文本框等一系列控件,最后借助于callback函数调用程序,在函数调用程序的设计中先编写各个子界面中的回调函数下的程序,再编写GUI界面的回调函数下的程序。
在设计人机交互操作界面时,在MATLAB命令行中输入guide或者选择MATLAB主界面File菜单New子菜单下的GUI项,打开GUIDE启动对话框,在GUIDEtemplates 菜单下4个选项中选择空白模板BlankGUI(Default),在点击OK后进入GUI编辑界面。在GUIDE设计界面下,通过单击或者拖拽鼠标的方式创建自己的GUI程序界面。
三、装载机设计平台的具体实现
装载机设计过程复杂,设计内容繁多,该设计平台的建立采用一个总设计界面与若干个子设计界面相互回调,每个子界面都可以实现一个具体的设计内容,并且可以切换回主界面,进行其他内容的设计。
(一)总界面的设计
打开Matlab,打开NEW中的GUI,新建一个主界面,添加一个Static Text控件用于显示参数的名称,并命名为“装载机设计”; 添加一个Axes控件用于显示参数的细则图像,并添加装载机图片;同时再创建9个Push Button控件用于完成程序在后台的实现,并分别命名为“总体设计”、“工作装置设计”、“动力系统设计”、“传动系统设计”、“制动系统设计”、“行走系统设计”、“液压系统设计”、“电气系统设计”以及“退出”;点击运行按钮,运行结果如1所示。
(二)子界面的设计
针对总结面中8个按钮所对应的设计内容分别设置多级子界面,以工作装置设计中的铲斗设计为例进行说明。
(1)新建工作装置设计一级子界面。添加Panel控件,并命名为“工作装置设计”;添加5个Push Button控件,并分别命名为“铲斗设计”、“连杆系统设计”、“静力学计算及强度校核”、“结构动力分析”以及“退出”,点击运行按钮,运行结果如图2所示。
(2)新建铲斗设计二级子界面。由4个面板(Panel)、2个触控按钮(Push Button)、34个静态文本(Static Text)、9个可编辑文本框(Edit Text)、4个弹出式菜单(Pop-up Menu)组成。4个面板(Panel),分别命名为“铲斗设计”、“确认基本参数”、“计算”以及“斗容计算”;2个触控按钮(Push Button)用于实现相关计算,分别命名为“计算”、“计算”;34个静态文本(Static Text)用于显示部分计算结果的值,分别为“mr”、“vr”、“cxvs”、“宽度m”、“内侧宽度m”、“斗底长度系数1.40-1.53”、“后壁长度系数1.1-1.2”、“挡板高度系数0.12-0.14”、“圆弧半径系数0.35-0.45”、“张开角45°-52°”、“挡板与后壁间的夹角5°-10°”、“下铰接点与斗底高系数0.06-0.12”、“铲斗回转半径m”、“铲斗圆弧半径m”、“斗底长度m”、“后斗壁长度m”、“挡板高度m”、“下铰接点与斗底高度”、“r0”、“r1”、“lg”、“lz”、“lk”、“homega”、“横截面积”、“铲斗开口长m”、“堆积高度m”、“平装容量计算”、“额定容量计算”、“sa”、“bt”、“c”、“vs”、“vrr”;9个可编辑文本框(Edit Text),分别命名为“edit1”、“b0”、“lambdag”、“lambdaz”、“lambdak”、“lambdar”、“gamma0”、“gamma1”、“hr”;4个弹出式菜单(Pop-up Menu)用于同类数值的选取,并命名为“选择装载机的型号(ZL10、ZL15、ZL20、ZL25、ZL30、ZL40、ZL50、ZL80、ZL100、ZL160、ZL200、ZL240)”、“请选择切削刃形状(直线型切削刃和非直线型切削刃)”、“请选择斗齿(整体式和分体式)”和“请选择侧刃(弧线测刃和折线测刃)”,并摆放于合适位置,如图3所示。
点击下拉菜单,选择ZL80轮式装载机为例,点击运行按钮,然后输入相应的参数时可得到如下结果,如图4所示。
由D4可知,在下拉菜单中选择不同型号的铲斗,在文本输入框中输入不同的条件参数,即可得到不同的铲斗设计参数,设计过程直观明了,不同的条件参数对设计结果的影响一目了然,方便了设计人员修改更正,使得设计过程更为简单有效。
铲斗设计结束后,可通过界面跳转返回一级子界面,点击其他按钮进入相应设计内容的二级子界面进行设计,界面及功能的实现过程与铲斗类似,在此不一一赘述。
(三)界面的跳转及退出
在设计过程中,每一个界面之间还存在一定的联系,因此需要界面的跳转,以图2跳转到图3界面为例,设计过程为:打开装载机设计的fig文件,右键单击工作装置设计,然后点击View Callbacks中的Callback,弹出回调函数如下:
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
(1)此时如在此程序后面输入要跳转到下一界面的m文件程序名称,如:Gongzuozhuangzhisheji即可从主界面跳转到工作装置设计一级子界面。
(2)如在此程序后面输入close(gcf),即可退出此界面。
四、结论
本文应用可视化程能力的图形用户界面GUI,实现了装载机设计平台的建立,该设计平台将装载机的设计过程加载在平台界面中,通过总界面与子界面不同的回调函数进行链接,实现了图形用户界面人机交互式的设计过程,增加了设计过程的直观性,便于设计人员修改更正,既可作为教学辅助软件帮助学生理解理论知识,提高教学质量,也可作为专业设计人员的辅助设计工具,同时也为其他工程机械的可视化设计奠定了良好的基础。
参考文献:
[1] 张春慧,宗哲英,王蒙等.基于Matlab GUI的自动控制原理虚拟实验平台的开发与研究[J].内蒙古农业大学学报(自然科学版),2015.
[2] 温淑焕,佟永正,刘福才,马锴.基于Matlab GUI的计算机控制技术教学演示系统设计[J].高教研究与实践,2016.
线性代数MATLAB GUI自主学习能力
一、前言
作为理工科各专业的一门本科基础课程,《线性代数与解析几何》课程的基本方法理论是学生进行后续专业研究所必备的。由于此课程中概念、结论较为抽象、复杂,传统的课堂教学对其的讲解必然是有限且不充分的,因此学生需要在课余时间借助其他教学资源进行必要的自主学习。
二、课程对学生自主学习能力的要求
1.《线性代数与解析几何》课程的教学特点及存在的问题
通常情况下,《线性代数与解析几何》课程是在本科一年级开设。在教学过程中,学校对此课程多采用大班授课形式。授课教师可以结合多媒体课件进行理论教学,以生动的方式来讲解抽象的理论知识;基于Matlab软件进行实验教学,充分发挥Matlab的优势来展示相关理论知识的实践性,着力加深学生对包括行列式、空间解析几何、线性方程组等理论内容的理解。
但是,很多学生在学习此课程的过程中仍存在困难。一是对于空间解析几何这一章中的许多问题,学生需要借助形象具体的图形来解决。尽管在课堂上,教师可以对典型的空间几何图形进行描述,但并不是所有的问题都能在课堂上得到解决。那么,学生在课堂之外独立解决其他空间几何问题时,就不免会对一些几何图形的形成产生困惑,而这会阻碍其对问题的进一步解决。二是现有的授课过程还很难体现课程内容的实践意义。在目前的授课过程中,教师的大部分时间都在讲授教学大纲所规定的教学内容,没有较多时间将课程内容拓展到相关的实际工程问题上。三是许多学生觉得此课程的理论知识较多,使其学习感到吃力。
这些问题都是教师在教学过程中需要注意,并应着力解决的。对此,一些研究者也提出了相应的解决方法,其中以增强学生的自主学习能力为主。
2.课程需要学生进行自主学习
所谓的自主学习,是在20世纪70年代由美国等国家提出。相比于传统的课堂学习方式,自主学习方式强调学习者是学习过程的主体,是学习者发挥自主性和创造性的一种学习方式。有效的自主学习,不仅可以让学习者体会学习中的乐趣,而且可以提高学习效率。
对于《线性代数与解析几何》课程,有效的自主学习过程可以帮助学生解决学习中的困难。这是因为,学生之所以觉得此课程中的定理引理较多,主要是源于其对理论知识理解得不够深入透彻,忽视了各知识点间的内在联系,未能建立起完善的知识体系。尽管一定学时的实验教学,可以缓解学生在形象思维与课程理论知识间存在的差异,也可以让学生对课程内容的实用性有一些了解,但是,鉴于学时方面的限制,课堂讲解必然是不充分的,学生仍需要在课余时间借助其他教学资源进行自主学习。
事实上,实现有效地自主学习《线性代数与解析几何》课程并不容易。目前,虽有一些学者对此进行了研究,但多数研究成果仅是从学习流程角度进行讨论。但是,要实现真正高效的自主学习,还应从调动学生的学习兴趣入手,这也与其他学科课程是一致的。对于理工科学生而言,只有让其真正认识到所学理论知识是有应用价值的,让其在解决问题时体会到学习的乐趣和成就感,才能调动其学习兴趣,从而使其实现真正的“自主”学习。对此,许多研究者认为MALAB GUI不失为一种有效的工具。
三、MATLAB GUI课件对学生自主学习能力的帮助增强作用
GUI是基于MATLAB软件的一种图形用户界面(Graphical User Interfaces),由窗口、按键、光标、菜单、文字说明等多个对象构成的。用户可以通过一定的方法(如鼠标)选择、激活图形对象,从而使计算机产生某些动作或是变化(如实现绘图等)。基于MATLAB软件,GUI不仅可以实现科学计算和图形处理等功能,也可以将复杂程序形成可视化人机交互界面,从而被国内外许多院校接受并作为数学等学科的辅助教学工具。
在《线性代数与解析几何》课程中,无论是应用空间几何图形的解析几何内容,还是基于矩阵理论的方程组、向量空间内容,都是可以设计出相关的MATLAB GUI课件。具体的,在图1的MATLAB GUI界面中,平面的参数是可以自行编辑输入的。通过这种自主输入曲面参数的方式,学生可以更为深刻地体会参数变化对曲面位置及形状的影响,从而有助于其以空间图形的角度理解问题。
总体上,对于《线性代数与解析几何》课程而言,MATLAB GUI课件的优势主要表现在以下几个方面:
(1)可以在较短时间内进行复杂运算,并且有强大的交互式功能。一方面,MATLAB GUI是基于MATLAB软件进行编写的,在MATLAB软件可实现的运算都可在MATLAB GUI中实现。即使是一些复杂的运算问题,也可以用MATLAB GUI以可视化的形式展示在学生面前。另一方面,MATLAB GUI具有强大的交互式功能。
(2)可以更好地展示理论知识的实践价值。该课程有着深厚的工程实践背景,这是大学安排学生学习此课程的主要原因之一。MATLAB GUI课件以其设计简洁、操作简便的界面,将这些工程实践问题生动地展示在学生面前,这种可视化交互式形式避免了枯燥的文字叙述,有助于加深学生对知识的理解、增强理论知识的应用价值。
四、结论
《线性代数与解析几何》课程在高校基础教学中发挥着重要的作用。在学习此课程的过程中,对于抽象的数学知识,学生难免会感到难于理解并可能产生厌学的情绪。而我们的教学实践表明,利用MATLAB GUI设计应用案例问题,通过演示应用案例的解决过程,可以让学生进一步理解相应的理论知识,提高其学习兴趣,从而使其更加积极主动地进行自主学习。
参考文献:
[1]周宇剑.基于思维能力培养的大学数学自主学习研究[J].科技信息,2013,(11):59.
[2]单正垛.刍议大学数学教学中如何加强学生自主学习能力的培养[J].中国校外教育,2008,(1):42.
在(2014)高行(知)终字第2815号苹果公司诉专利复审委员会“便携式显示设备(带图形用户界面)”的外观设计专利申请驳回复审行政纠纷案(简称苹果案)中,争议焦点之一为:包含图形用户界面(GUI)的外观设计(简称GUI外观设计)是否可以成为外观设计专利的授权客体。专利复审委员会认为,因为《专利审查指南2010》规定通电图案不能成为外观设计专利的授权客体,所以GUI外观设计不是外观设计专利授权客体。苹果公司则认为,GUI外观设计符合2008年修正的《专利法》第二条第四款的规定,可以成为专利授权客体。上述争议涉及到两个重要问题:第一,判断GUI外观设计是否可以成为专利授权客体的法律依据是什么,是《专利法》还是《专利审查指南》?第二,GUI外观设计能不能成为《专利法》规定的专利授权客体?围绕上述两个问题,本文拟从合法性的角度对GUI外观设计的可专利性进行讨论。
一、GUI外观设计能否授予专利权
(一)《专利法》第二条第四款的分析
2008年修正的《专利法》从授权条件、保护内容等角度全面提升了外观设计专利保护的标准,外观设计的定义也首次上升到法律条文中。《专利法》第二条第四款规定,外观设计,是指对产品的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计。根据《专利法》第二条第四款的规定,满足以下四个法律要件的外观设计,可以成为我国外观设计专利权的保护客体:(一)以工业产品为载体;(二)是对产品形状、图案或者其结合以及色彩与形状、图案结合所作出的新的设计;(三)适于批量化生产的工业应用;(四)富有美感。
在苹果案中,本申请为便携式显示设备(带图形用户界面),是对便携式显示设备产品在整体形状和图案上所作出的外观设计。北京市高级人民法院认为,虽然本申请还包括了在产品通电状态下才能显示的图形用户界面,但并不能以此否定本申请在实质上仍是对便携式显示设备在产品整体外观方面所进行的设计。同时,本申请亦能满足外观设计专利在工业应用和美感方面的要求,故可以成为我国外观设计专利权的保护客体。
(二)第68号令的佐证
《专利审查指南2010》第一部分第三章第7.4小节中规定,“产品通电后显示的图案,例如电子表盘显示的图案,手机显示屏上显示的图案、软件界面等”属于不授予外观设计专利权的情形。由于图形用户界面属于通电图案,因此在实践中,专利审查部门据此拒绝给予GUI外观设计授予专利权。
2014年3月12日,国家知识产权局令第68号《国家知识产权局关于修改
毫无疑问,在《专利法》和《专利法实施细则》都没有对外观设计专利的授权客体进行修正的情况下,第68号令将GUI外观设计纳入专利授权客体,表明国家知识产权局认为依照《专利法》和《专利法实施细则》,GUI外观设计本来就应当属于外观设计专利的授权客体。如若不然,第68号令将GUI外观设计纳入专利权保护范围就没有法律依据。
二、专利授权客体的法律依据
(一)《专利审查指南》能否作为法律依据
既然《专利法》本来就允许给予GUI外观设计授予专利权,那么第68号令修改之前的《专利审查指南2010》第一部分第三章第7.4节的相关规定是否违反法律规定呢?这取决于外观设计专利授权客体的法律依据到底是什么?如果说确定外观设计专利授权客体的法律依据是《专利审查指南》,那么《专利审查指南》对授权客体的改变可以使GUI外观设计由不合法的授权客体变成了合法的授权客体。如果确定外观设计专利授权客体的法律依据是《专利法》,而《专利法》本来就没有将GUI外观设计排除在授权客体之外,那么《专利审查指南2010》第一部分第三章第7.4小节的相关规定就缺乏法律依据。
《专利法》第三条规定:“国务院专利行政部门负责管理全国的专利工作;统一受理和审查专利申请,依法授予专利权。”国家知识产权局虽然负责授予专利权,但必须依法授予专利权。也就是说,哪些客体能够授予专利权,应当由全国人大及其常务会制定的法律来规定,不应当由国家知识产权局来确定。《立法法》第七十一条规定:“国务院各部、委员会、中国人民银行、审计署和具有行政管理职能的直属机构,可以根据法律和国务院的行政法规、决定、命令,在本部门的权限范围内,制定规章。部门规章规定的事项应当属于执行法律或者国务院的行政法规、决定、命令的事项。”在《专利法》已经明确对专利授权客体进行了规定的情况下,《专利审查指南》对外观设计专利授权客体的相关规定应当属于执行《专利法》的事项。因此,确定外观设计专利授权客体的法律依据应当是《专利法》而非《专利审查指南》,《专利审查指南》对专利授权客体的规定只不过是对《专利法》的执行事项。在能够确定《专利法》第二条第四款允许给予GUI外观设计授予专利权的前提下,《专利审查指南》不能作出相反的规定。
在苹果案中,在GUI外观设计属于《专利法》第二条第四款规定的外观设计专利授权客体,国家知识产权局也通过第68号令确认这一点的前提下,专利复审委员会依据第68号令修改之前的《专利审查指南2010》的相关规定将GUI外观设计排除在专利授权客体之外,缺乏法律依据,因此北京市第一中级人民法院和北京市高级人民法院对专利复审委员会的主张不予支持。
(二)《专利审查指南2010》相关规定的解读
在苹果案中,专利复审委员会上诉主张,《专利审查指南2010》在“外观设计专利申请的初步审查”部分,即第一部分第三章第7.4节中规定,产品通电后显示的图案,例如电子表表盘显示的图案、手机显示屏上显示的图案、软件界面等属于不授予外观设计专利权的情形。对此北京市高级人民法院认为:第一,《专利审查指南》仅是部门行政规章而非法律或行政法规,人民法院在判断包含通电图案的外观设计是否属于我国外观设计专利授权客体时,仍应以《专利法》第二条第四款的规定为基础进行考察。第二,尽管《专利审查指南》规定“产品通电后显示的图案”属于不授予外观设计专利权的情形,但结合《专利法》第二条第四款及上述分析可知,该规定也不应被扩大解释为只要是包含了产品通电后所显示图案的外观设计申请,均应被排除在授予外观设计专利权的范围之外。换言之,产品通电后显示的图案并非全部不能享有外观设计专利权保护,如本案之情形,若产品通电后显示的图形用户界面属于产品整体外观设计的一部分,或产品整体外观设计包括了图形用户界面,则由于此种外观设计专利申请实质上仍属于对产品整体外观所进行的设计,并不应以不符合《专利法》第二条第四款规定为由而被驳回。
三、小结
关键词: 电力电子技术; MatlabGUI; 虚拟仿真平台; 教学可视化平台
中图分类号: TN99?34; TM743 文献标识码: A 文章编号: 1004?373X(2017)12?0063?03
Abstract: In view of the advantages of short class time, more concepts, wide knowledge scope and strong practice of the power electronic curriculum, the construction of power electronic virtual simulation platform based on Matlab GUI (graphical user interface) and Simulink is discussed. Taking the main interface of DC?DC converting technique as an example, contents of main interface, contents and functions of principle analysis interface, basic characteristics of running interface and closed?loop simulation instance are described. The interface of visualization platform for power electronic teaching is friendly and easy to operate. It is helpful to deepen students' understanding of basic concepts, improve the quality of experimental teaching. Its application can deepen students′ comprehension to the basic theory and concept of their courses, improve the experimental teaching quality, and promote the experimental teaching reform.
Keywords: power electronic technology; Matlab GUI; virtual simulation platform
电力电子技术是使用电力电子器件对电能进行变换和控制的技术[1]。它是以高等数学、电路原理及模拟电子技术等课程为基础,同时也是自动控制原理,电机与拖动等专业课程的基础课,具有很强的实用性和综合性,是电气工程领域理论和实践相结合的专业核心课程之一,因此电力电子技术教学质量的好坏,将直接影响后续课程的学习[2?4]。电力电子课程概念多、知识面广、实践性强,这给老师讲课和学生理解带来很大的困惑,所以借助实验来加深学生对基本概念、基本理论和基本方法的理解很有必要。而传统电力电子实验教学受场地、器材、时间等诸多因素的影响,难以让学生达到基本的实验目标。虚拟仿真实验平台投入小,不受时间、地点的限制,具有一定的开放性,方便学生创新等优点。所以借助虚拟仿真平台来辅助课堂及实验教学会起到巨大的帮助作用[5?7]。本文借助Matlab/Simulink仿真环境,以及GUI(Graphical User Interface)设计友好的人机界面,通过GUI输入框中数值的不同,改变电路参数,即可在界面观察对应的波形变化。同时在界面中添加不同的入口画面,可以观察仿真原理图,以及该电路的原理分析。同时,在虚拟仿真平台中加入电路的闭环实例分析,加深学生对该电路的理解,提高学生的积极性和学习效率[8?9]。
1 电力电子虚拟仿真平台的建立
1.1 电力电子虚拟仿真平台结构
在设计GUI界面之前,首先需要确定虚拟仿真平台的结构。由于设计该平台的主要目的是为电力电子课程提供一个教学和实验的仿真平台,对电力电子课程中的一些常用电路进行动态仿真,帮助学生深刻理解电力电子课程中电路拓扑和电路实例。根据这些基本要求,并结合电力电子课程的特点,确定了虚拟仿真平台的结构框图,如图1所示。该平台包含了电力电子技术中常用电路,如整流电路、逆变电路、直流?直流变流技术、交流?交流变流技术及PWM控制技术5个基本模块。课程的其他内容可在虚拟仿真平台的基础上扩展,因此,该平台具有很强的通用性。
为了使每个模块设计更加简单,虚拟仿真平台采用了分层设计方法,将该平台分为若干个模块,每个模块包括一些子模块。图2给出了直流?直流变流技术模块的组成框图,它包括原理分析、运行界面和实例分析三个子模块,其他模块的设计思想同该模块基本相同。
1.2 Matlab图形用户界面设计
Matlab为用户提供了强大的集成图形用户界面开发环境(GUIDE),用户可以方便地设计图形用户界面,开发自己的用户程序[10]。图形用户界面(GUI)是由窗口、菜单、文字说明、标签等控件构成。用户通过提供的控件,如按钮、滑块、列表框等可以设计出易于理解的人机界面。一个图形用户界面必须包括控件(Component)、图形窗口(Graphics)和回调函数(Callback)三个部分,利用GUIDE创建GUI是常用方法之一。使用GUIDE创建GUI的基本步骤如下:
(1) 选择控件类型。根据预期的界面设计,选择控件类型。电力电子教学虚拟仿真平台中使用的控件主要包括按钮、输入框、标签、坐标轴及面板等。
(2) 设置控件属性。控件的基本属性包括字符(String)、标签(Tag)、字体大小(FontSize)、前景色(ForegroundColor)等。通过设置控件属性,实现预期的功能指标。
(3) 编写回调函数。确定整个界面布局之后,需要编写控件的回调函数。鼠标右键单击控件,选择“查看回调”“callback”,编写回调函数。
在界面设计中用到的主要函数如下:
get_param(′boostdianlu/Vin′,′Amplitude′);
%获取电路输入电压幅值
set_param(′boostdianlu/Vin′,′Amplitude′,a);
%设置输入电压幅值
options = simset(′SrcWorkspace′,′current′);
%指定模型从当前空间运行,获取编辑框中输入电压幅值参数
sim(′boostdianlu′,[],options);
%使用sim()函数使仿真模型从当前GUI函数空间进行仿真
plot(tout,yout); %将输出波形绘制到当前坐标轴对象上
1.3 Simulink仿真模型
Simulink是Matlab的一个功能组件,为用户提供建模和仿真的工作平台。Simulink的SimPowerStems仿真工具箱提供电机与拖动、电力系统与自动化以及电力电子等仿真模块,几乎涵盖所有电力电子电路的仿真模块。按照电力电子电路的基本原理,利用工具箱提供的模块可以进行仿真电路的搭建[11]。以“升压斩波闭环仿真电路”为例,说明建立仿真模型的基本步骤:
(1) 调用功能模块。根据升压斩波电路原理图,确定所需功能模块,找到它们所在模块库。
(2) 创建并保存模型。建好模型后,使用Save命令保存,以便下次使用时直接调用。
(3) 连接模块并设置参数。将各个功能模块按照布局进行连接,并设置每个模块的参数。
(4) 运行仿真并显示结果。
2 电力电子仿真平台实例
根据图1所示的虚拟仿真平台结构框图和图2所示的直流?直流变流技术模块结构框图,采用GUIDE设计各基本模块和子模块的图形用户界面,编写各控件对应的回调函数,响应用户操作。该GUI界面由主界面、原理分析界面、运行界面以及仿真模型四个部分组成。
2.1 直流?直流变流技术主界面
主界面是访问该节的第一个用户界面,如图3所示。直流?直流变流技术主界面由标题和功能选择按钮组成。在主界面中列出了包括降压斩波电路、升压斩波电路、升降压斩波电路等常用的六大类基本斩波电路。每一类电路中有三个按钮,对应三个入口,分别是“原理分析”、“运行界面”以及“实例分析”。用户点击其中任意一个按钮,即可进入对应的功能界面。
2.2 升压斩波电路原理分析界面
以升压斩波电路为例,当点击“原理分析”按钮后,通过按钮对应的回调函数,就可跳转到升压斩波电路的原理分析界面,如图4所示。原理分析界面由三部分构成,分别是电路原理图、原理分析文字说明以及主界面按钮。学生通过原理分析界面巩固所学内容,进一步加深对升压斩波电路基本原理的理解,提高理论知识的学习效果。当点击“主界面”按钮时即可返回图3所示的直流?直流变流技术的主界面。
2.3 升压斩波电路运行界面
当点击升压斩波电路“运行界面”按钮后,跳转到对应的运行界面,如图5所示。运行界面由参数设置栏,波形栏以及菜单栏三部分组成。在参数栏设置需要改变的参数,分别为电压E、电容R、电感L、电阻R。在输入框中输入对应的数值可改变仿真电路的参数[12]。波形栏共有三个坐标轴,分别显示输出电压,电感电压以及开关信号波形。菜单栏包括仿真按钮和主界面按钮两部分。点击“仿真”按钮进行电路仿真,点击“主界面”按钮返回图3对应的直流?直流变流技术的主界面。
通过输入框改变仿真电路参数,不用在仿真模型中双击元件改变,提高了仿真效率,同时该界面可直观地观察电路参数的改变而引起的波形的变化。
2.4 实例分析电路
当点击“实例分析”按钮后,打开以升压斩波电路为基础的闭环仿真电路图。“运行界面”只是针对课本中开环升压斩波电路进行操作,而在实际工程中,几乎所有的电路均使用闭环模型,由于闭环仿真电路在课堂中不作讲述重点,学生对闭环设计无从下手,不能将所学知识应用于实际工程。因此,在虚拟仿真平台添加“实例分析”入口,有助于学生从工程的角度理解闭环仿真电路的设计方法,以及闭环参数改变对电路的影响。
3 结 语
在电力电子教学过程中,针对课程课时短、概念多、知识面广、实践性强等特点,电力电子教学虚拟仿真平台可以达到辅助教学的目的。通过Matlab GUI,设计友好的人机交互界面,搭建电力电子技术虚拟仿真平台。对于一基本电路,其“原理分析”界面巩固所学理论知识、“运行界面”分析参数改变引起的波形变化、“实例分析”界面理解闭环电路设计思想。学生不仅学习基本电路拓扑,巩固课堂所学知识,而且真正学会该电路在工程实际中的使用方法。
参考文献
[1] 王兆安,刘进军.电力电子技术[M].北京:机械工业出版社,2009.
[2] 刘桂英,粟时平.“电力电子技术”的Matlab/Simulink教学仿真实践[J].电气电子教学学报,2011(1):87?89.
[3] 王春凤,李旭春,薛文轩,等.电力电子技术实验教学改革的探索与实践[J].实验室研究与探索,2011(9):127?129.
[4] 夏小虎,张春鹏,冯敏亮.“电力电子技术”课程可视化实践教学改革与探索[J].中国电力教育,2011(12):146?147.
[5] 杨蕊,王晓燕,杨婷.基于Multisim虚拟仿真技术的电工电子实验室建设[J].实验技术与管理,2015(10):129?131.
[6] 朱高中.基于Multisim仿真软件在高频实验教学中的应用研究[J].实验技术与管理,2012(11):106?108.
[7] 尚丽,淮文军.基于Matlab/Simulink和GUI的运动控制系统虚拟实验平台设计[J].实验室研究与探索,2010(6):66?71.
[8] 杜世民,杨润萍.基于Matlab GUI的“信号与系统”教学仿真平台开发[J].实验技术与管理,2012(3):87?90.
[9] 牛天林,樊波,张强,等.Matlab/Simulink仿真在电力电子技术教学中应用[J].实验室研究与探索,2015(2):84?87.
[10] 王巧花,叶平,黄民.基于Matlab的图形用户界面(GUI)设计[J].煤矿机械,2005(3):60?62.
关键词: 光学实验教学 MATLAB GUI 等倾干涉 仿真
1.引言
光学实验是物理实验的重要内容。对光学实验进行计算机仿真,具有重要意义[1-2]:可以把抽象的概念、现象和规律通过仿真生动形象地表达出来,使学生利于理解,加深印象;不必通过具体仪器的调试,通过电脑就可演示,节省了时间,减少了贵重仪器的损伤,等等。通过GUI设计,可以设计出界面良好、操作简便、功能强大的用户界面,而且人机交互性好,可以直接在界面上更改参数而不必修改程序,动态显示仿真结果,更利于学生观察和分析各参数对干涉条纹的影响,也为相关课件的设计提供了新的途径。[3-4]MATLAB是集数值运算、符号运算和图形处理等功能于一体的科学计算语言,而且提供了功能强大的图形用户设计界面,可设计出方便直观的智能型交互界面[5-6]。我用MATLAB 语言的GUI设计,以等倾干涉为例,设计了仿真界面,并应用于光学实验教学中,取得了很好效果。
2.等倾干涉原理和实验的主要内容[7-8]
把单色点光源S放在会聚透镜L的焦点处,使平行光束ab照射到薄膜表面上。光束分为两部分:一部分是反射光束ab;另一部分折射后又反射,然后折射成ab,如图1所示。通过透镜L使ab、ab在点S′叠加,产生干涉。由于干涉条纹与ab的入射角有关,因此称其为等倾干涉。
等倾干涉的光强分布为:I=Icos[2πdcos],其中d为薄膜的厚度,f为L焦距,r=。
等倾干涉实验的主要内容包括实验目的、实验原理、实验步骤、数据处理和思考与练习。
3.界面设计
Gui界面设计主要包括以下几个步骤。
第一步构思草图,编排控件的布局。打开Matlab程序,在file菜单中选择new gui,打开guide设计界面模板,界面模板左边的各个控件可以直接用鼠标拖到编辑框。
第二步设置各控件的属性。比如设置各控件的标识(Tag)、颜色、字体等。
第三步各个控件代码的设计。关键是OpeningFcn(初始界面函数)和控件的Callback(回调函数)代码的设计。 初始界面函数即设定各参数的初始值,可根据实际情况设定。回调函数是核心,是对界面控件触发时的事件响应函数。
根据需要,界面使用了7个按钮(Push Button),标识分别为:实验目的、实验演示、实验步骤、数据处理、思考与练习、实验演示和系统退出,用鼠标点击任一个项目,则会执行相应的功能;2个静态文本框(Static Text)用于输入波长和薄膜厚度;2个滑动条(Slide),用鼠标拖动滑动条可以改变波长和厚度的大小;1个坐标轴对象(Axes)用于显示仿真结果。界面如图2所示。
4.演示控件的回调函数
控件的功能是通过执行其回调程序来实现的,用户界面设计完成后,选中控件用鼠标双击,在弹出的菜单中选择View Callbacks,在其子菜单中选择Callback,就可以进入回调程序编译器中,在回调程序编译器中编写个控件的代码,就可以使图形界面完成约定的任务。
演示控件的回调函数代码:
Lambda=str2num(get(handles.slide1,’String’)); %从滑动条中获取波长的大小
d=str2num(get(slide2,’String’)); %从滑动条中获取厚度的大小
f=200;n=1;N=300;xmax=10;ymax=10;
x=linspace(-xmax,xmax,N);y=linspace(-ymax,ymax,N); %设定相关参数和范围
for i=1:N
for j=1:N
r(i,j)=sqrt(x(i)*x(i)+y(j)*y(j));
B(i,j)=cos(pi*(2*n*d*cos(asin(n*sin(atan(r(i,j)/f)))))/Lambda).^2;
end
end%计算光强的大小
Br=4*B*NCL;NCL=255; colormap(gray(NCL)); %设定灰度等级
axes(handles.axes1) image(x,y,Br); %在坐标轴对象中显示仿真结果
5.仿真结果和结果分析
在界面中设定波长的初始数据为,厚度,用鼠标点击演示控件,得到如图3的仿真结果。
用鼠标拖动滑动条,使由大到小变化,则在仿真界面上可以看到,条纹向外发散,如图4.1所示;如果使由小到大变化,则条纹向里收缩,如图4.2所示。变化结果与理论完全相同。连续拖动滑动条,则可以观察到条纹连续变化,实现仿真的动态演示。
同样,如果通过鼠标改变波长滑动条数值大小,可以看到条纹随波长变化而变化,结果与理论完全相同。
6.结语
利用Matlab Gui可以设计出内容丰富、界面直观的光学实验仿真界面,在界面上可以输入参数,可以通过滑动条来该变参数,实现动态仿真,更利于学生观察和分析各参数对干涉条纹的影响,也为相关课件的设计提供了新的途径。
参考文献:
[1]梁齐,许晓琳等.光干涉实验的计算机模拟[J].大学物理实验,2003,16,(3):61-63.
[2]宋清,熊万杰.光学现象的计算机仿真[J].中山大学学报论丛,2005,25,(3):24-29.
[3]基于MATLABGUI的大学物理交互式演示实验动画设计[J]. 大学物理实验,2010,23,(1):52-53.
[4]基于GUI的空间滤波实验的计算机模拟 [J]. 物理实验,2010,30,(3):12-15.
[5]罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社,2009:224-231.
[6]陈 光,毛涛涛等.精通MATLAB GUI设计[M].北京:电子工业出版社,2008:268.
[7]姚启钧.光学教程[M].北京:高等教育出版社,2008:33-35.
如果你使用电脑已经有一些年头,那么必定知道那些没有图形界面的操作系统,微软的DOS、UNIX以及最初的Linux,要熟练使用这些操作系统,用户必须牢牢记住大量的命令并且达到应用自如的程度。在那些年代,如果能够掌握计算机操作技能绝对会让人肃然起敬,但也正是由于操作的复杂性,计算机很难真正进入家庭、为普通用户所掌握。
计算机业界很早就意识到这个问题,以图形界面(GUI,Graphic User Interface)代替字符界面成为广泛的共识―图形界面操作直观,用户不加以特殊训练也能够很容易掌握,计算机应用的门槛大大降低。在上世纪八十年代之后,各种类别的操作系统都竞相引入图形界面,这其中除了我们熟知的微软Windows和苹果机之外,还有为数众多、但后来没落无踪的其他系统。在九十年代中期,图形界面开始真正取代字符界面成为标准,这其中又以微软的Windows 95为典型代表。进入到2000年后,操作系统原本残留的字符界面模式被完全取消,而图形界面也不满足以简陋的设计,朝向注重视觉体验的方向发展,苹果Mac OS X与微软Windows XP堪称是两大支柱。而在这之后,图形界面走向完美和个性化时代,终端用户都可以参与其中,为自己设计一套个人化的界面外观,而业界则将目光放到更遥远的将来,希望能在未来操作系统中采用3D化的全新视觉界面。
在下面的文字中,我们将向大家详细介绍图形界面的概念起源、实现以及详细的发展历程,期间将涉及到形形的操作系统。
从理论探索到产品雏型
GUI界面电脑的概念始于上世纪三十年代,当时有一位名为“凡尼佛・布什(Vannevar Bush)”的人物,他天马行空提出一个称为“Memex”的智慧设备,他认为这种设备具有与书桌类似的外观,同时还有两个可触摸操作的显示器、一个输入键盘以及一个扫描仪,通过这个设备,用户可以访问到人类的所有知识库。在那个年代,计算机远未产生,凡尼佛・布什的想法纯属没有根据的科学幻想,根本不可能成为现实。但不可否认的是,这套设想极富远见,它成功地描绘了半个世纪后的计算机形态,也许微软的平板电脑曾经从Memex的直接触摸操作概念中获取灵感。
道格拉斯博士的NLS系统
我们无法确认微软是否借鉴了凡尼佛・布什的天才设想,但可以确信的是,这套设想对操作系统引入GUI图形界面起到了至关重要的启蒙作用。1948年,道格拉斯・恩格尔巴特(Douglas Englebart,GUI与鼠标的发明者)在取得学士学位后进入美国国家航空咨询委员会(NACA,美国宇航局前身)工作,但他不满足于仅从事一些范围狭窄的小项目,而希望自身从事的工作能让整个世界获益。在一次上班途中,他突然回忆起凡尼佛・布什关于“Memex”的文章,并开始思考这样的设备应该如何实现。对于其中的触摸式显示屏,道格拉斯很自然就想到阴极射线管技术―在二战时,道格拉斯曾是一位雷达兵,而当时的雷达显示屏都是使用阴极射线管作为信号显示的核心装置。道格拉斯同时想到,屏幕上的信息应该以图形的方式存在,而操作者能够自由地在屏幕的任何范围选择自己感兴趣的内容。这个设想让道格拉斯兴奋不已,但他万万没有想到,第一个雏形系统到20年后才真正出现。
后来,道格拉斯离职进入加州大学伯克利分校,并于1956年获得电气工程与计算机博士学位,之后道格拉斯博士进入著名的斯坦福研究所,而在此期间他可以真正将自己的构想变成现实。1968年,道格拉斯博士终于获得成功,他将自己所开发的“NLS”图形系统公开演示,这套系统包括一个圆形的CRT显示器、一个键盘和一个鼠标,其名称“NLS”是“在线系统”的缩写,因为它是建立在几台计算机联网的基础上。NLS可以显示出图形界面,用户可以通过移动鼠标在整个屏幕上自由选择内容,实现无纸化的办公。尽管今天看来这种场景再平常不过,但在1968年绝对是革命性的新概念,以至于道格拉斯博士在演示NLS系统时,许多家电视台都进行实时报道、并引起外界的轰动。道格拉斯博士被因此誉为是“GUI界面之父”,不过他还拥有另外一个同样响亮的头衔:“鼠标之父”―他为NLS系统研制的鼠标后来成为计算机的标准输入设备之一,并深刻影响了计算机发展的进程。
Alto电脑与Smalltalk语言
道格拉斯博士的NLS系统让外界震惊,无纸化办公成为许多企业津津乐道的话题,施乐公司(Xerox)因此感到深深不安。印刷设备是施乐的命脉所在,在NLS系统出现后,施乐担忧“无纸时代”的到来将对他们产生巨大的冲击,意识到其中的“风险”,施乐高层认为不如抢先掌握这门技术,成为新领域的领导者,遂于1970年成立著名的帕罗奥托研究中心(PARC)来专门负责此事。尽管无纸化的风险在后来被证明纯属多余(进入PC时代后,办公纸张不仅未减少,反而消耗越多),但施乐高层当时所作的决定仍然是非常英明的。PARC成为世界上最好的研究所,它拥有一流的设备和人材,几乎所有人都是博士,或是各自领域中最好的专家。很自然,PARC拿出了包括操作系统GUI界面在内的大量成果,而且也孕育了许多顶尖的科技人物,这其中包括3Com的创立者Bob Metcalfe以及微软的首席架构师(Chief Architect)查尔斯・西蒙尼(Charles Simonyi),当然这些都是后话。
PARC中心同时进行多个研究项目,在它们的第一批发明成果中就有激光打印机,这被誉为是打印技术的革命性突破。不过,PARC所发明的激光打印机无法独立工作,必须有一台图形化的电脑为它提供待打印的文档才行,而在那时,尚未有这样的电脑存在。PARC的计算机科学家干脆自己动手,他们从道格拉斯博士的NLS系统中获取灵感,并于1973年发明了Alto电脑。Alto被认为是操作系统GUI界面发展史上的里程碑,它拥有视窗(Windows)和下拉菜单(Pull-Down MENU),并通过鼠标(Mouse)进行灵活操作,真正打破了困扰业界已久的人机阻隔,极大提升了操作效率,由此也组成了工业界的WIMP标准。这里有一个不得不提到的插曲:一位名叫查尔斯・西蒙尼的伯克利分校学生有幸参与Alto开发项目,他为Alto电脑编写了一个文本编辑器:“Bravo”,Bravo改变了信息组织和显示的方式,被公认是第一个“所见即所得”的文字处理软件。
1975年,PARC正式对外公开Alto电脑,当时有大量的精英人物前往参观。在花旗银行的代表参观时,西蒙尼向他们演示Alto电脑、Bravo软件、网络和激光打印机的协作过程。Bravo使用各种字体来编辑文件,这些文件被显示在Alto电脑的屏幕上,然后相关数据通过以太网被传输到打印机上,而打印出的文件与屏幕上显示的内容看起来一模一样。“所见即所得”的概念由此产生,而这整整比苹果Macintosh电脑早了11年,但成为标准的却是后者。
与Alto电脑共生的还有Smalltalk语言。Smalltalk是第一种面向对象的编程语言,且具有类似Java的自动内存管理功能,用任何语言来形容这个伟大的成果都不过分。PARC使用Smalltalk语言来设计图形化环境,并带来许多崭新的GUI编程理念,今天我们所见的所有可视化开发平台,都可以看作是Smalltalk的思想衍生。在Alto电脑发明之后,PARC的许多开发成员都希望能够将它商业化―Alto比后来的苹果机屏幕要大,一样有鼠标和图形界面,前景可观。可遗憾的是,施乐一直拘泥于“产品越大越好”的大公司作风,只愿意生产复杂而昂贵的机器,对Alto电脑兴趣不高。Alto电脑定价为5万美元,而激光打印机需要二十万美元,后者自然成为施乐的新方向,Alto电脑则被施乐高层所忽视。随后,PARC的成员坚持对Alto进行多番改进,并最终发展到Alto III型,但开发者强烈的商业化意愿再度被施乐拒绝。直到1981年,施乐公司才将Alto电脑的精简版―Star 8010文档处理机以17000美元的价格推向市场,Star 8010与Alto有较大的不同,但它具备优秀的文档处理能力,多个文档可以并列在屏幕上不相互交叠,用户可以很方便地同时处理。可惜在这个时候,施乐已经错失抢占制高点的最佳时机,在市场上Star 8010没有获得多大的反响。更不幸的是,PARC的众多精英不满施乐而另谋出路,大量的精英加入苹果电脑公司展开冒险之旅,不过开发Bravo软件的查尔斯・西蒙尼却去了当时名不见经传的微软公司,后来他成为了微软的事实缔造者之一。
苹果Lisa/Macintosh的诞生
施乐未及时将Alto推向市场错失良机,最终只有在施乐公司内部为员工所使用,没有对外推广。不过,Alto还是成为图形化操作系统的先导,后来的苹果Lisa电脑和微软Windows 1.0,都可以看作是Alto思想的直接继承。而在图形化操作系统方面,相比微软,苹果显然领先了一步。在当时,由史蒂夫・乔布斯和史蒂夫・沃兹尼克创办的苹果电脑公司被公认为是个人计算机的先锋,可它们在图形界面上并没有太大的建树。AppleⅠ完全基于命令行操作,后来推出的AppleⅡ虽然配有简单的图形界面,但没有鼠标,完全依靠键盘输入,同时也保留了传统的命令行操作。比较幸运的是,施乐公司的Alto没有被推向市场,而IBM在个人计算机领域后知后觉,AppleⅡ便成为当时可买到的唯一一款拥有“图形界面”的个人电脑,而苹果当然也就大发其财,进入前所未有的高速发展阶段。作为一家生机勃勃的年轻企业,苹果公司成为许多精英向往的乐土,施乐PARC中心出走的许多工程师随后都加入苹果,而这些工程师也就得以继续他们之前的工作,这样,Alto电脑及Smalltalk语言就以另一种形式出现在计算机的大舞台上。
从技术水平来看,AppleⅡ计算机无论如何也无法与同时代的Alto相比,PARC的前工程师们深知这一点,在他们的安排下,苹果电脑公司的创始人之一,即后来大名鼎鼎的乔布斯(Steve Jobs)得以进入PARC研究中心,他见到了传说中的Alto电脑并观看了相关演示。乔布斯详细了解了Alto电脑的整套概念,完全图形化的界面和用鼠标灵活输入的操控方式让他深感震惊。在此之后,乔布斯就成为GUI界面的忠实信徒,他决心开发一套类似的电脑并将它推向市场―这是发生在1979年的事情,而乔布斯的这次参观,直接改变了后来的“Lisa”计算机项目,PC与操作系统的发展方向因此被扭转到“正确”方向。
为了完成Lisa,开发者在AppleⅡ计算机上模拟了多种不同的界面原型,包括一套基于任务界面的“Twenty Questions”方案,以及一个拥有四列文件浏览的方案,后一项设计后来在NeXTStep系统和Mac OS X系统中也得到借鉴。不过,Lisa开发团队最终选择基于图标显示的方案,在该方案中,所有的文件、文件夹和应用程序都使用图标来表示,同时它还拥有下拉菜单条,而菜单栏则被放置在屏幕的最上部。如果我们对照一下现在的Mac OS X系统,便会发现它的基本元素仍然继承于Lisa。此外,Lisa计算机还拥有大量的创新,例如引入键盘快捷命令,一些操作频繁的菜单命令可借助快捷键实现,以滚动条代替原本固定高度的窗格;垃圾箱支持拖曳功能,那些不需要的文件可以通过鼠标拖曳的方式直接删除。另外,引入了菜单的前景、背景概念,那些暂时没有被选中的菜单处于较浅的“泛灰色”,这样用户操作时可一目了然。Lisa理所当然引入了鼠标,不过苹果公司对鼠标操作进行了非常大的改变―最初Alto电脑上使用了三键鼠标,后来施乐的Star 8010文档处理机则精简到双键方式,而苹果Lisa则使用只有一个按键的鼠标,这样做是为了简化操作起见(苹果显然低估了用户掌握技术的能力),但基于图标的GUI系统至少需要选中、运行等两种鼠标操作,为此,苹果发明了双击操作,这在后来成为所有GUI操作系统的标准,即便现在的鼠标已经拥有大量的按键。
Lisa计算机开创了许多前所未有的GUI概念,而这些概念也多数都被沿用至今。我们知道,之前的施乐Alto电脑和Star 8010文档处理机都有图标的概念,但Lisa才是第一部真正采用图标来表示文件的计算机。在Lisa系统中,图标文件以地址路径的方式加以组织,开启每个路径时都会弹出一个独立的显示窗口;而Lisa引入的“拖放操作”也堪称一大发明,它以直观自然的方式实现很多原本复杂的操作,例如,我们可以选中文件、文件夹并将它们拖到其他的窗口下,这样就完成拷贝操作;此外Lisa还有大量可有效简化操作的细微设计,如允许用户为每个文件指定执行的程序,只要双击该文件便会被相应的程序自动开启。几乎所有的这些细节在后来的GUI操作系统中都得到传承。
Lisa项目始于1979年,但直到1983年才正式开发完毕。可问题接踵而来,这部计算机售价定在1万美元,虽然在当时这样的价格不算昂贵,但还是有大量的用户无法接受,而如果用户群体不够广泛,专门为Lisa平台开发软件就变得很不现实。为此,苹果决定开发廉价版的Lisa,这也就是著名的“Macintosh”项目。Macintosh计算机在1984年被推向市场,它拥有一个9英寸的单色屏幕、128KB内存和一个软盘驱动器,保留了Lisa计算机大量的GUI特性,但它不具备多任务处理能力,也无法实现在两个程序间灵活切换,售价只有2495美元。Macintosh的引发巨大的轰动,人们第一次看到计算机拥有如此绚丽的操作界面、听到计算机能发出如此美妙的声音,而且也是第一次体验到计算机如此简便的操作。Macintosh的业绩堪称辉煌,苹果公司也到达发展史上的最高点―虽然此后,苹果公司一直走下坡路,但Macintosh的后续版本似乎没有受到特别大的影响,即便在九十年代中后期苹果濒临倒闭时,Mac OS 8和Mac OS 9在技术上依然没有落后对手。
兴旺蓬勃的GUI运动
除了苹果的Lisa外,在上世纪八十年代还有大量的GUI操作系统,包括VisiCorp公司的VisiOn、微软的Windows 1.0和2.0、Tandy公司的DeskMate、Digital Research的GEM、IBM OS/2、NeXT公司的NeXTStep、为UNIX开发的X Window等等,但除了Windows、NeXTStep和X Window最终修成正果外,其他的所有GUI后来都没有得到持续发展。下面,我们将以出现时间的先后顺序来向大家介绍这些GUI的特性及发展概况。
VisiOn操作系统
在苹果致力于开发Lisa图形界面时,VisiCorp公司也在从事同样的工作。VisiCorp是世界上第一款电子表格软件VisiCalc的缔造者,当时它是最强的PC应用软件企业。不过,VisiCorp并非自己制造计算机,而是为IBM PC开发带有图形GUI的操作系统,这套产品被定名为“VisiOn”,时间是在1983年。
尽管VisiOn也实现了图形化操作,但它存在大量的不足:首先,VisiOn的价格过于昂贵,单套软件的售价就达到1495美元,这让许多用户难以接受;其次,VisiOn对硬件要求明显过高,它只有在512KB内存、带有硬盘和鼠标的PC-XT计算机上才能够工作,这样许多不符合要求的用户就被挡在门外。更要命的是,VisiOn在设计上并无过人之处,如它只支持640×200的单色图形模式,也未脱离基于文本的痕迹。例如,VisiOn根本无法支持图标功能,用户必须点击文本标签才能够打开文件或执行程序;在视觉方面,VisiOn仅支持固定宽度的字体显示,不仅明显逊于苹果的Lisa和Macintosh,甚至连施乐Alto、Star 8010都不如。另外,VisiOn对鼠标支持极为有限,它甚至无法支持鼠标斜线移动,而仅能让光标水平或垂直运动―这相当于1968年道格拉斯博士NLS系统的水平。虽然技术比Lisa落后了一大截,但它却是当时PC机唯一能够使用的GUI图形操作系统。不幸的是,当比尔・盖茨看到VisiOn给DOS带来的现实威胁后,发起了一场堪称经典的宣传战。微软竭尽所能向用户大力宣传Windows系统的种种好处,力求从心理上和精神上赢得用户,这场宣传战的目的在于瓦解潜在对手而非促进销售。事实上,在那个时候Windows不仅还没有面市,而且几乎还未开始设计。但微软的这场宣传非常有效,当VisiOn开始销售时,VisiCorp意外发现接受这套产品的人寥寥无几,因为几乎整个世界都在等待微软的“Windows”。VisiCorp公司轻而易举就被微软击败,同时VisiOn也走到了尽头,没有后来者为它延续生命。
微软Windows起步
VisiOn无疑是非常失败的产品,但它却促使微软不得不开发比它更有竞争力的产品。起初,微软将自己的GUI系统命名为“Interface Manager(界面管理者)”,但后来选择了一个更形象、更有亲和力的名字Windows。Windows的原型系统于1983年推出,它的界面看起来就像是VisiOn与Microsoft Word for DOS操作界面的混合―Microsoft Word for DOS脱胎于Alto电脑的Bravo编辑器,它是西蒙尼加入微软后带来的杰作。
此后又过了两年,Windows 1.0才得以正式。与原型系统相比,Windows 1.0明显成熟,它拥有流行GUI的共有特点,例如页面滚动条、窗口控制器和菜单,但在细节设计上Windows与其他的GUI还是存在大量的不同,例如每个应用程序都有菜单栏,采用窗口平铺而非重叠设计。这其中有一个有趣的插曲,来自施乐PARC中心的设计者认为平铺设计优于重叠设计,但比尔・盖茨本人并不这么认为,遂定下未来的Windows GUI应采用窗口重叠方式,这套规则在Windows 2.0生效后被一直沿用至今。不过Windows 1.0还是采用平铺设计,当然它并非是一套独立的操作系统,而是为DOS系统设计的GUI图形界面。由于Windows 1.0功能弱小,绝大多数用户还是习惯于使用命令行。
Tandy DeskMate GUI系统
Tandy计算机公司的名字也许没有多少人听说过,但在1984年,这家公司也了它们独自开发的GUI系统DeskMate。不过,DeskMate对鼠标支持非常有限,它主要依靠键盘操作,并采用平铺设计的窗口。理所当然,DeskMate非常难于使用,而在销售上,它一直与Tandy自己的计算机捆绑,未有公开推广。
Digital Research推出GEM GUI
1985年底,Digital Research公司推出一种名为GEM的图形环境,与Windows一样,它是一套为DOS系统设计的GUI,但同时也可工作在Atari的ST计算机上(Atari公司成立于1972年,由美国犹他大学毕业生Bushnell创立,从事供家庭娱乐的计算机软硬件研发,可以说是当今电子游戏机的始祖)。实际上,GEM也是由大量来自施乐PARC的研发人员操刀,但不幸的是,它与苹果的Lisa/Macintosh GUI实在是太像了,同样的图标表示,菜单栏被放置在屏幕顶部,鼠标操作也非常相似。大为光火的苹果Digital Research侵权,结果便是Digital Research被迫对PC DOS的GEM版本作修改,但比较奇怪的是,针对Atari计算机的GEM GUI居然没有受到波及。
Amiga Workbench图形环境
Commodore公司出品的Amiga计算机曾在市场上风靡一时,它使用了支持多媒体图形和音频的多处理器技术,具有优秀的视频与音频质量,这也使得它广泛超越了同时期的其它电脑。此外,Amiga配备的操作系统可支持多任务环境,这一点连苹果、微软和IBM都自愧不如,不过在图形环境方面,Amiga采用的是一套名为“Workbench”的GUI,在当时它也算颇有亮点:支持窗口的上下移动,选择或移动时窗口会自动出现在前景,位于顶部的菜单栏可自动隐藏,并可通过鼠标右键加以激活等等。但由于Commodore公司经营不善,Workbench GUI后来也没有了下文。
Berkely SoftworksGEOS
在1986年,Berkely Softworks公司了GEOS图形GUI,它与遇到麻烦的GEM GUI有不少相似之处,但其主要应用对象是诸如Apple Ⅱ、Commodore 64等有些年头的计算机产品。很不幸,GEOS出台的时间太迟了,此时它面临着微软Windows的强力竞争,自然GEOS后来也不知所踪。
微软Windows 2.0
在1987年,微软将Windows GUI升级到2.0版本,Windows 2.0放弃了窗口平铺设计,转为目前流行的重叠模式,并使用了大量类似Macintosh的GUI元素,成熟度远远优于之前的1.0版。苹果公司看到之后深表震惊,他们不惜提讼,认为Windows 2.0侵犯了Macintosh的“look & feel”视觉专利,苹果声称,Macintosh的“整体视觉外观”受到著作权保护,Windows虽然在某些窗口细节方面不同于Macintosh,但整体看起来非常类似。而法庭随之要求苹果公司提供具体的证据,苹果遂提交了189个GUI元素。不幸的是,苹果似乎忘记了其中的179个元素都已经在微软Windows 1.0协议中许可过(以换取微软为Macintosh平台开发办公软件),而剩下的10个元素基本上都不受著作权保护,要么不是苹果的原创,要么这些元素就是唯一可能的通用实现。这场诉讼最终持续到1994年,苹果陷入完全的失败,此时没有什么力量可以阻挡微软的崛起。
有必要提到一个有趣的插曲:在苹果微软侵权期间,施乐公司也提起对苹果的诉讼,施乐声称它才是GUI著作权的真正拥有者,而从历史发展来看,施乐确实是所有GUI的发展源头。不过,这个案子在技术层面也被否决。
针对32位RISC平台的“Arthur”
也是在1987年,Acorn计算机公司世界上首款采用32位RISC处理器(ARM2处理器,8MHz)的微型电脑―Acorn A305/A310,同时它们也为这台电脑设计了一款名为“Arthur”的GUI。与其他多数GUI一样,Arthur带有滚动条,允许用户通过卷动页面来获取更多的内容,同时也拥有不少创举。Arthur可显示出16种颜色,它同时也是第一款可支持抗锯齿字体显示的GUI产品;而且在屏幕底部位置还设计了一个专门的“停靠栏(Dock)”,常用程序的快捷方式或工具可以被放在该停靠栏上,这样用户就能迅速操作电脑。在多年以后,苹果公司在设计Mac OS X时也引入了这项设计,这是后话。而Arthur后来被Acorn公司重命名为“RISC OS”,并发展到4.0版本,但它最终还是没有在残酷的竞争中生存下去。
这里有必要插入一些题外话。我们知道,80年代中期和之前的许多GUI产品,都采用固定宽度的字体,如GEM、Windows 1.0、Amiga Workbench和Acorn的Arthur等等。但事实上,所有这些GUI都可以在应用程序中支持比例显示的字体,设计者之所以没有在操作系统中采用同样的设计,原因在于当时计算机显示器的分辨率实在太低了――多数计算的显示器都只有640×200分辨率,即使是Macintosh,最高也只能支持384像素的垂直分辨率。而随着技术的发展,显示分辨率不断提高,GUI也普遍采纳比例显示字体作为新标准。
乔布斯打造NeXTStep
在1985年,乔布斯离开亲手创立的苹果公司,成立了一家名为“NeXT”的电脑公司,乔布斯希望打造一款真正面向未来的终极电脑,开发新的图形化操作系统当然就是重中之重。NeXT公司的作品被命名为“NeXTStep”,开发工作始于1985年终于1988年。从技术上讲,NeXTStep的确是一款卓越不凡的图形化操作系统:所有GUI元素都加以三维阴影修饰,包括窗口、菜单、按钮等等,一改之前GUI的简陋作风;NeXTStep率先在窗口右上角设立“X”符号,作为关闭窗口的快捷方式;NeXTStep引入垂直菜单条设计,用户只要点击屏幕左上角的特定标识菜单条就会下拉,而鼠标在屏幕上的其他位置再点击一下菜单条就会自动关闭,操作颇为方便;NeXTStep也引入了Dock停靠栏,但与Arthur GUI不同的是,这个停靠栏可以被放在屏幕的任意一边(默认位置为屏幕的右边)。
由于视觉效果大大提升,NeXTStep对硬件也提出了“苛刻”的要求,一款具有较高分辨率的显示器是必须的,否则NeXTStep就无法正常工作。
1988年IBM OS/2诞生
IBM的OS/2也是在1988年诞生,它原本设计作为DOS的替代品,由IBM与微软联手操刀。那个时候,微软远没有向IBM说不的勇气,但他们在OS/2开发上也没有什么杰出表现。OS/2 1.0版基于文本命令行方式操作,而1.1版则增加了图形GUI,在上面的图片中,你可以看到它与微软Windows 2.0颇为类似,但技术水准比同期出现的NeXTStep落后了数个档次。
针对UNIX的X Window System
GUI大潮不可避免波及到铁板一块的UNIX领域,早在1984年,麻省理工学院(MIT)就与DEC公司合作,致力于在UNIX系统上开发一个分散式的视窗环境,这便是大名鼎鼎的“X Window System”项目。1986年,MIT正式发行X Window,此后它便成为UNIX的标准视窗环境。紧接着,全力负责发展该项目的X协会成立,X Window进入了新阶段。与此同时,许多UNIX厂商也在X Window原型上开发适合自己的UNIX GUI视窗环境,其中比较著名的有SUN与AT&T联手开发的“Open Look”、IBM主导下的OSF(Open Software Foundation,开放软件基金会)开发出“Motif”。而一些爱好者则成立了非营利的XFree86组织,致力于在X86系统上开发X Window,不过这套免费且功能完整的X Window很快就进入了商用UNIX系统中,且被移植到多种硬件平台,而后来的Linux也直接从该项目中获益。
X Window项目最初的目的只是提供简单的图形框架,以在UNIX工作站的大屏幕上显示更多的命令,同时设计一个显示时钟以免屏幕看起来空空荡荡,对于GUI的精美程度和易用程度并不讲究,毕竟那时候能够熟练操作UNIX的都是些习惯命令行的高手,根本不在乎GUI存在与否。因此,X Window最初被设计得很简单,许多GUI元素模仿于微软的Windows,但它拥有一个小小的创新,当鼠标指针移动在某个窗口时,该窗口会被自动激活,用户无需点击便能够直接输入,简化了用户操作。
由于必须以UNIX系统作为基础,X Window注定只能成为UNIX上的一个应用,而无法与之高度整合,但这种设计也赋予X Window很高的灵活性。X Window从逻辑上分为三层:最底层的X Server主要处理输入输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将它交给X Client处理,而由X Client传来的输出信息也由它来负责输出;最外层的X Client则提供一个完整的GUI界面,负责与用户的直接交互;衔接X Server与X Client的就是“X Protocol(X通讯协议)”,它的任务是充当这两者的沟通管道。尽管UNIX厂商采用相同的X Window,但由于终端的X Client并不相同,这就导致不同UNIX产品搭配的GUI界面看起来非常不一样。而进入90年代后,Linux和FreeBSD以自由的名义蓬勃发展,这两者都需要一个同样自由、开源的X Client桌面环境―分别在1996年和1997年,自由软件界发起了KDE(K Desktop Environment)和Gnome两个项目,这一点我们会在后面加以介绍。
Windows、Mac OS X、KDE/Gnome三杰胜出
进入90年代后,大量的个人电脑厂商在竞争中快速倒闭,而在这场旷日持久的GUI之战中,只有微软Windows与苹果Macintosh得以幸存。Digital Research公司在1989年停止了GEM项目,数年后整家公司出售给Novell。而采用GEM GUI的Atari公司在1993年关闭了自己的生产线。也是在这一年,NeXT公司停止了硬件业务专注于OS开发,乔布斯本人在1997年回归苹果之后,NeXTStep也就成为Mac OS X的基础。Commodore公司在1994破产,Workbench GUI由此中断。至于后来被命名为RISC OS的Arthur GUI,直到1998年才被停售。
从Windows 3.0到Windows 2000
在这场GUI大战中,微软成为最大的胜利者,尽管它在技术和理念上都不领先,获胜的奥秘或许更多应该归结于微软成功的商业运作。在1990年,微软推出Windows 3.0版本,3.1版则在1992年推出,这两者在外观上有了小小的进步,可支持更多的色彩,但它们依然无法提供与Macintosh相媲美的丰富视觉特性,不过这些缺陷并没有妨碍Windows 3.x的市场成绩。在不长的时间内微软就售出数百万份拷贝,原因在于当时IBM PC已成为标准,苹果再也无力与之竞争,这样,Windows 3.x便成为唯一的选择。
1995年,微软Windows 95,这绝对是一个划时代的GUI系统,Windows 95承袭于Windows 3.x,仍然以DOS为基础,但它彻底抛离了命令行,用户在漂亮的图形环境下可以干任何事情,而不必借助那些晦涩难记的命令行。此时,CRT显示器已经可以提供适应GUI系统的理想分辨率和彩色显示,Windows 95在这些方面大放异彩。在发售当日,专卖店甚至出现彻夜排队的情形,而它也是微软迄今为止最富革命意义的操作系统。Windows 95的伟大意义不仅在于宣告图形化PC时代的到来,更是为PC向大众普及立下了汗马功劳。
1998年,微软Windows 98,不过它只是Windows 95的适应性改进版本,增加对更多硬件的支持。Windows 98同样大受欢迎,在很短的时间内就完成普及重任,但与此同时,伴随Windows 98还有一个非常著名的“蓝屏错误”,因为它动不动就崩溃出现蓝屏。
在发展Windows 3.x至Windows 98产品线的同时,微软还拥有一个专门针对工作站的NT产品线。Windows NT的历史可追溯到1988年,当时微软获得来自Digital公司、以David N. Cutler为首的核心技术组―Cutler原本为Digital公司开发操作系统,但在1988年Digital的执行层取消了Cutler的项目,并裁去许多员工,嗅觉敏锐的微软不费吹灰之力将这个梦寐以求的团队招至麾下,从此开始NT项目的生涯,而Cutler本人则成为Windows NT的首席设计师。
Windows NT的内部项目名称原本是“OS/2 NT”,微软当时的意思是让它继承OS/2,保留OS/2的API作为新操作系统的接口,而“NT”两个字母则是“New Technology”的缩写。不幸的是,1990年Windows 3.0的成功让微软的想法大大改变,与IBM的关系也不复存在,很快它就被更名为Windows NT。1993年,Windows NT的第一个版本,它采用与Windows 3.x一样的GUI和Win32 API(从 Windows 3.0的16位API 进化而来的32位版本),这样它就可以直接兼容Windows 3.x应用程序,当然在系统核心上这两大系列是完全不同的。此后,NT获得相当稳健的发展,与Windows 95/98齐头并进。但在Windows 98之后,糟糕的稳定性受到外界一直指责,微软意识到问题的严重性,决定对产品线进行整合。结果便是NT成为未来操作系统的基础,而Windows 98系列在衍生出Windows Me之后就被终结,不过,它的GUI界面被完整地承袭下来。
1999年,基于NT内核的Windows 2000,微软本想将它作为Windows 98和NT的接替者,但消费市场对此不太认同,因为前者的硬件要求较高,一些配置落后的机器运行缓慢,更要命的是Windows 2000平台对游戏兼容性很差,当时大多数游戏都无法在新平台上运作,Windows 98的主流地位并没有被撼动。至于GUI界面,如我们所见,Windows 2000与Windows 98几乎没有任何区别,微软甚至都懒得对它作一番美化工作,因为在这个时候,微软在操作系统和办公软件领域都已占据绝对的垄断地位,甚至根本不存在一个有威胁的对手,直到Linux运动渐入佳境之后情况才有所改变。
IBM OS/2惨痛夭折
在Windows 3.x开始流行的同时,OS/2系统的销售成绩却很不如人意,业界传出IBM与微软关系出现重大裂痕的传言,其实事实也是如此,最终IBM获得了OS/2并独立开发,而微软则专注于自身的Windows系统。1992年,IBMOS/2 2.0版本,新版本引入一套名为“Workplace”的GUI外观,它吸收了大量NeXTStep系统的精髓(IBM从NeXT公司手中获得使用权),例如拖放图标、字体、背景颜色等等许多地方都雷同于NeXTStep。另外,OS/2 2.0还可以通过虚拟机技术,允许一套Windows 3.1 GUI在其上运行,用户可以以全屏或窗口模式来运行Windows 3.1及相关的所有应用程序。
但遗憾的是,这个时候微软已羽翼丰满,Windows 3.x成为市场主流,而在微软Windows 95之后,IBM的OS/2就被彻底边缘化,它的最后一个版本是1996年的OS/2 4.0,在这之后OS/2就销声匿迹了。
生不逢时的BeOS
在90年代中期,GUI界面的同质化现象就非常明显了,虽然各家方案都有自己的特点,但整体上都大同小异。即便如此,我们还是看到了一些创新,BeOS就是其中的一例。BeOS由Be公司所开发,该公司的创始者是一位名叫Gassée的法国人、苹果公司的前领导之一。BeOS的开发目的明确,基于UNIX核心、专为多媒体应用设计,其正式版本于1996年11月,只能工作在苹果的Mac平台上,不过1998年Be公司推出了针对X86 PC的版本。BeOS在GUI设计上有不少亮点,如它创造了“任务组(Taskbar Grouping)”的概念,即同样的程序或开启文档可以被自动分类,以免占用过多的空间,而用户通过选择子菜单就可以找到相应的文档。这项设计后来被微软借鉴,并在Windows XP中得到采用。此外,BeOS还在窗口顶部设计了一个专门的移动条,以便让用户可以自由移动窗口,但这看来似乎多此一举。
BeOS特别偏重多媒体功能,被誉为是“多媒体大师的天堂”,不少制作人都采用BeOS作为自己的开发平台。而在技术水平上,BeOS也优于同时代的Linux,可惜它并没有在大众市场获得流行。2002年,Be公司被Palm收购,BeOS发展到5.0版之后就嘎然而止,而还算幸运的是,BeOS并没有彻底消失,它衍生出大量的版本,尽管这些版本都没有什么影响力。
Mac OS X与Aqua界面
在九十年代的绝大部分时间,苹果公司都陷入一场持久的混乱,产品开发失误、决策失误、领导更迭接踵而来,称得上奇迹的是这家公司居然没有倒闭。1997年,苹果推出Mac OS 8系统,技术水准并不比后来的Windows 98落后,它在短暂热销后又陷入僵局,苹果糟糕的硬件产品成为最大的瓶颈。也是在这一年,乔布斯回归,NeXT公司被苹果并购,NeXTStep操作系统自然落入苹果囊中。重新成为苹果当家人之后,乔布斯作出一个有史以来最为英明的决策:它决定在NeXTStep基础上开发下一代Mac OS X系统。Mac OS X采用Darwin内核,它是UNIX家族的一个变种,当然拥有UNIX类操作系统惯有的高稳定性。苹果为OS X设计了一套名为“Aqua”的GUI,Aqua非常漂亮,拥有类似水流的平滑动感,设计精美的图标、菜单和停靠栏,当它在1999年亮相的时候引起外界一片惊叹,但在它的时候,时间表已经翻到了2000年。
Mac OS X、Windows XP与Linux Gnome/KDE三足鼎立
医学图像处理教学需要课堂教授,更需要加强实践性教学环节[2-3],但由于课时和实验条件的限制,传统授课有时难以达到教学要求,而虚拟实验则可弥补这方面的局限[4]:通过将Matlab仿真技术与GUI界面设计引入到教学中,开发可视化的医学图像处理虚拟实验平台,既取得理想的教学效果,也可培养医学生的自主学习能力、独立思考能力和综合应用能力[5]。医学生通过图像处理仿真熟悉各种医学图像处理方法的原理,并通过调整参数,了解参数变化对医学图像处理效果的影响。
1 实验平台的结构
医学图像处理虚拟实验平台的设计思想是结合医学图像处理的基本理论,通过虚拟实验的方法强化医学图像处理的基本思想与核心概念,为医学生的理解和应用提供帮助[6]。
通过GUI界面,医学生可选择任意感兴趣的项目或教师指定的项目进行仿真实验[7]。实验平台还提供医学图像处理相关课件、图像处理Matlab编程的教学视频、仿真实验指导书、拓展实验题等资料,医学生可利用GUI界面随时调入进行自学。
同时,实验平台还提供脑肿瘤fmri处理示例,此示例选取于临床影像三维显示的实际应用,帮助医学生了解如何将自己所学的图像处理知识应用到工作实践中,从而提高医学生的综合素质。
根据教学计划的要求,医学图像处理虚拟实验平台包含医学图像处理教学内容中所有典型的实验项目,具体内容如下:
(1)图像插值实验。主要分析最近邻插值(Nearest Interpolation)、双线性插值(Bilinear Interpolation)和双三次插值(Bicubic Interpolation)的原理[8]和Matlab编码。
(2)图像锐化实验。主要分析Roberts算子、Prewitt算子和Sobel算子的原理和Matlab编码,并且比较每种边缘检测算法对应的6个结果,包括原图、直接梯度输出图像、门槛判断图像、边缘规定图像、背景规定图像和二值图像。
(3)图像去噪实验。主要分析均值滤波、中值滤波、维纳滤波等图像平滑处理算法[9]的原理和Matlab编码。
(4)图像融合实验。主要分析像素灰度值极大/极小融合法、加权平均融合法、傅里叶变换法的原理[10]和Matlab编码。
(5)图像分割实验。主要分析全局阈值法、大津阈值法、迭代法、最大熵分割法和局部阈值法等图像分割方法[11]的原理和Matlab编码。
(6)头动校正实验。主要研究投影法[12]配准技术的原理与Matlab编码,并且展示投影法头动校正后的效果。
(7)三维可视化实验。主要研究基于体绘制的三维重建算法[13]原理与Matlab编码。
例如,在图像去噪实验中,加入噪声的参数可由用户自己输入。针对噪声图像,医学生可以选用不同的平滑算法,自行设置模板参数,进行图像去噪处理。通过观察加噪效果及比较各种平滑处理算法处理后的结果,医学生对平滑算法处理的针对性、参数取值范围和实验结果都会比较熟悉,从而达到教学目的(具体操作过程见第3部分)。
2 实验平台的设计
使用Matlab图形用户界面开发环境(Matlab Graphical User Interface Development Environment,GUIDE)创建GUI图形界面是常用创建Matlab GUI的方法,该方法简单易学,能方便实现图形控件的各种功能。医学图像处理虚拟实验平台的GUI界面主要包括虚拟实验平台主界面、课件界面、实验名称界面、各实验项目界面、教学视频界面、脑肿瘤fmri处理示例界面等。
医学图像处理虚拟实验平台主界面的主要控件为7个按钮(Push Button)。按钮有多个功能,如函数的调入、界面之间的跳转等。将所需控件移入GUI界面,再对各控件按照程序要求进行属性编辑,修改完成后,点击GUI界面工具栏中的运行按钮,即可运行设计完成的GUI界面,Matlab系统会自动生成相应的M文件。
设计实验平台时,考虑到医学图像处理的理论知识较多,同时考虑到医学生自学的要求,将课件与教学视频按照由易到难的顺序排列。按照教学要求,设置7项医学图像处理实验,而每个实验都有实验目的、实验原理、实验内容、实验结果与分析等项目,因此设置成实验目的、实验原理、实验内容、实验结果与分析和返回5个按钮,以图像去噪实验为例。
通过“实验结果与分析”按钮就可进入仿真界面,进行仿真分析,如图1所示。选取相应的文件,输入相应的参数,点击对应按钮,即可对图片进行加噪去噪处理,并能直接观察比较处理结果。
为培养医学生应用所学图像处理知识的能力,实验平台设计脑肿瘤fmri处理示例板块。其内容是对脑部fmri原始数据进行预处理、放大、图像分割、体重建等操作,对脑部进行三维可视化[14]。脑部MRI图像的三维显示就是指利用一系列的二维脑部MRI图像重建三维图像模型并进行定性定量分析的技术。通过三维重建可以科学、准确地重建出被检物体,避免传统方法中临床医生通过自己大?X想象的不确定因素[15]。医学生只有亲自对脑部fmri原始数据进行读入、预处理、分割、重建等操作才能得到如图2所示的脑部轮廓三维图,从而初步认识自己所学图像处理技能的组合应用,明确医学图像处理对临床诊断与治疗规划的意义,达到学以致用的效果。
3 仿真实例分析
每个实验项目都提供仿真演示示例。以图像去噪实验为例,如图3所示。首先加入方差为0.02的高斯噪声,修改完参数后,点击加入噪声按钮就能得到噪声图像,如果均值参数修改为除0以外的任何数,则不会显示任何图像。然后针对生成的噪声图像,对其进行中值滤波处理、均值滤波处理和维纳滤波处理。每次进行处理前,都需要输入模板尺寸,模板尺寸越大,去噪效果越明显,但是图像丢失信息也会更加严重。医学生可通过反复修改模板尺寸,比对每次处理结果,选出最佳的模板参数。进行三种滤波处理后,医学生可根据三种滤波处理后的结果来总结每种滤波处理的特点与效果。最后,医学生如果有学习或者校验代码的需要,可以点开对应的主要代码查看按钮进行代码查看。
4 虚拟实验平台的使用与评价
医学图像处理虚拟实验平台的Matlab文件编译完毕后,生成的可执行文件需要Matlab运行环境的支持,如果要将此软件发布到其他没有Matlab运行环境的机器,还需要进行一项工作,即打包Matlab组件运行环境(Matlab Component Runtime,MCR)[16]。建议采用专业的安装包制作软件Setup Factory将MCR与软件一起打包,设置代码使得安装包解压完毕后,自动安装MCR。安装完成后,点击编译的Matlab可执行程序,即可运行医学图像处理虚拟实验平台。
经过医学图像处理选修课投入使用后,医学生的学习积极性显著提高。除课堂授课外,大多数医学生在课后通过虚拟实验平台进行理论自学和题目自测,使得总体考核成绩明显上升,教学质量显著提高。
中图分类号: TP273 文献标志码:A
Gas emission prediction model of hybrid pi.sigma fuzzy neural network
PAN Yu.min*, ZHAO Li.yong, ZHANG Quan.zhu
College of Electronic Information Engineering, North China Institute of Science and Technology, Beijing 101601, China
Abstract:
A gas emission prediction model built by using reasoning method of hybrid pi.sigma fuzzy neural networks is proposed. The model adopts Gaussian function as a Fuzzy membership function, and the membership functions and conclusions parameters of the model can be adjusted online dynamically. Compared with the neural network prediction model, the method has characteristics of clear physical meaning, clear principle, fast convergence, high prediction accuracy and so on, the simulation results show the effectiveness of the method. In order to facilitate the practical application, we develope a Graphical User Interface (GUI) application interface in the Matlab environment. To solve the problems of unstable prediction results of neural network, to set training accuracy, the contradiction between training accuracy and prediction accuracy, and evaluation of generalization ability of the neural network in prediction process, experimental research is carring out, and the conclusions are given.
A gas emission prediction model built by using reasoning method of hybrid pi.sigma fuzzy neural networks was proposed. The model adopted Gaussian function as a Fuzzy membership function, and the membership functions and conclusions parameters of the model can be adjusted online dynamically. Compared with the neural network prediction model, the method has characteristics of clear physical meaning, clear principle, fast convergence, high prediction accuracy and so on, and the simulation results show the effectiveness of the method. In order to facilitate the practical application, we developed a Graphical User Interface (GUI) application interface in the Matlab environment. To solve the problems of unstable prediction results of neural network, to set training accuracy, the contradiction between training accuracy and prediction accuracy, and evaluation of generalization ability of the neural network in prediction process, experimental research was carried out, and the conclusions were given.
A gas emission prediction model established by using reasoning method of hybrid pi.sigma fuzzy neural networks was proposed. The model adopted Gaussian function as a fuzzy membership function, and the membership functions and conclusions parameters of the model could be adjusted online dynamically. Compared with the neural network prediction model, the method has characteristics of clear physical meaning, clear principle, fast convergence, high prediction accuracy and so on. The gas emission data of a coal mine simulation results show that the prediction has a high accuracy, fast convergence and the prediction results can be repeated, it is proved that the method is effective. In order to facilitate the practical application, the authors developed a Graphical User Interface (GUI) application interface in the Matlab environment, and gave the method and prediction results. The experiments also show that, for the data, the generalization ability of the model is best when the training accuracy is set 0.001, and the training accuracy and the prediction accuracy of the model do not have positive relationship.Key words:
hybrid pi.sigma neural fuzzy network; gas emission; prediction; Graphical User Interface (GUI)
0 引言
瓦斯事故是煤矿安全生产中最主要的地质灾害,也是制约煤碳生产可持续发展的“瓶颈”。预防与监控瓦斯事故历来受到世界各主要采煤国的高度重视,也是国内外学者广泛关注的重要课题,实现从源头上治理瓦斯灾害,准确预测瓦斯涌出量是解决问题的关键之一。
瓦斯涌出量是一个非常复杂的地质参数,它受许多因素的影响,如地质构造、煤层厚度、煤体结构、埋藏深度等自然因素,以及与开采技术相关,这些因素本身是随机变量,各因素之间相互制约、互为因果。因此,瓦斯涌出量实际上是一个多变量、时变、灰色、高度非线性及复杂的动力学系统,通常很难精确预测。瓦斯涌出量的大小不仅反映不同煤层的危险程度,同时也是决定开发新井、新采区、新工作面规模、通风、安全技术水平的重要指标以及煤层气资源评价的基础[1]。
对瓦斯涌出量的预测研究,以前苏联、波兰、德国、英国、法国等起步较早;我国在这方面的研究最早的是煤炭科学研究总院抚顺分院。目前,瓦斯涌出量的预测方法主要有:矿山统计法、瓦斯含量法、分源预测法、类比法、瓦斯地质法、数学模型法、速度
预测法[2],这些方法属于线性预测法。近年来,出现了灰色系统预测、模糊综合评判法、神经网络预测等非线性预测方法,其中以神经网络预测方法尤为突出,近年来获得了广泛应用,取得了一系列研究成果[1-3,12]。
目前神经网络预测方法主要是以BP(Back.Propagation)和径向基函数(Radical Basis Function,RBF)神经网络为主。其显著特点是仅借助于样本数据, 即可实现由Rn空间(n为网络输入节点数)到Rm空间(m为输出节点数)的高度非线性映射,而且这种映射可以由足够的训练样本来保证。神经网络不依赖精确的数学模型,容错性和鲁棒性强,有很强的非线性函数逼近能力,为瓦斯涌出量这一高度非线性的预测提供了一个全新的途径。
但是,在采用神经网络设计瓦斯涌出量预测模型时也存在如下几个问题:
1)网络结构设计尚无统一的理论依据;
2)预测结果通常为随机值;
3)机理缺乏透明度;
4)初始参数确定问题;
5)过度拟合现象;
6)局部极小问题。
其中大多数问题需要在实验过程中加以确定,采用试凑法,从多次实验中找出“最合适”的一种。由于影响神经网络预测能力的参数很多,上述方法未必能找到真正意义上的最合适的预测模型结构和参数。为此,本文提出了一种采用混合pi.sigma模糊神经网络的瓦斯涌出量预测的新方法,并开发了仿真预测可视化应用界面。
1 混合pi.sigma模糊神经网络
神经―模糊建模预测是近年来基于模糊集理论发展起来的一种新的预测方法。最新研究表明,将人工神经网络和模糊逻辑推理相结合构成的自适应神经―模糊推理系统具有收敛速度快、拟合能力强、预测精度高、网络训练结果确定等优势,这些恰好是研究和建立煤与瓦斯突出危险性预测方法追求的目标。
模糊逻辑和神经网络具有很强的互补性,它们都是对同一参考系――人脑智能的模拟,因此具有自然的内在联系,类似“人脑”的软硬件。神经网络中引入模糊逻辑可使网络具有逻辑推理能力, 彼此优势互补,物理意义和推理过程清晰。
针对多维模糊推理中的推理规则庞大的问题,学者Takagi和Sugeno提出了一种新的模糊推理模型,即T.S模型[5]。该模型模糊规则中“if”部分与扎德规则中的“if”部分相似,但是其“then”部分是精确函数,通常是输入变量的多项式。T.S模型可用少量的模糊规则生成较复杂的非线性函数,这在处理多变量系统时能有效地减少模糊规则个数,因而具有较大的优越性。由于T.S模型结论参数是线性函数而非模糊数,在实际系统中结论部分不能直接从专家经验和操作数据中得到,必须通过一定的算法进行训练。因此,模型参数的辨识成为建立T.S型模糊系统的主要问题。
2.3 网络泛化能力
为了评价网络的预测性能,采用泛化能力进行描述。泛化能力是指神经网络学习算法对新样本的适应能力,其目的是学习隐含在数据样本中的规律,经过训练后的网络对非训练样本也能给出合理的输出,该能力称为泛化能力。
泛化能力是评价网络预测性能的重要指标。需要指出的是,并非训练的次数越多或者设置的训练精度越高,就越能得出正确的预测结果。通常在网络的训练初期是学习数据的变化趋势,随着训练次数的增加主要记忆样本数值,因此过拟合状态时对于非训练样本的泛化能力反而变差。
此外,预测的准确性与外部输入样本数据有很大关系,如果样本数据不具有典型性和呈现一定的规律性,预测将失去意义。
泛化能力是衡量预测值与实测值差别的变量,采用平均相对变动值(Average Relative Variance,ARV)表示,ARV等价于网络泛化能力。ARV越小,网络的泛化能力越强,其表达式[14]为 :
ARV=∑Ni=1[x(i)-x^(i)]2∑Ni=1[x(i)-x(i)]2 (16)
其中:N是比较数据的个数,x(i)为实测数据,x(i)为实测数据的平均值,x^(i)为预测值。ARV越小,泛化能力越强。上述预测时的ARV=4.2658e-004,表明该预测模型有很强的泛化能力。
3 Matlab/GUI界面开发
目前,可视化界面开发以VC、VB多见,而利用Matlab/GUI进行界面开发的很少。相对VC、VB,Matlab软件在复杂的数值分析、矩阵运算、信号及图像处理等方面具有显著优势。在瓦斯涌出量预测时需要处理大量的数据,同时利用Matlab编写的程序更易于嵌入Matlab/GUI界面,而且具有方便、快捷和灵活的特点。
为便于实际工程应用,按照上述混合pi.sigma模糊神经网络原理,在Matlab/GUI环境中开发了仿真系统界面,如图3所示。Matlab/GUI界面使用M文件和GUIDE融合制作可视化GUI仿真预测系统界面[15]。
该仿真界面可以全面显示网络训练、预测及网络参数等信息,使用者不需要知道代码的具体内容,只要了解操作步骤即可很方便地操作界面,界面直观友好。该系统支持三种方式导入数据: 1) *.mat文件数据;2) * .txt数据; 3) *.exl格式的数据。
操作流程:1)导入数据,选择训练样本和检测样本数;2)选择合适的网络参数;3)点击“网络训练”按钮,将显示训练曲线、预测结果图形;4)点击“预测结果”按钮会显示底部数据,点击“Close”按钮关闭系统。
4 结语
本文提出了一种新型瓦斯涌出量混合pi.sigma模糊神经网络预测模型,该模型具有物理意义清楚、原理和结构透明、网络训练速度快、预测精度高、预测结果非随机等特点,并且隶属函数和结论参数可在线调整,可充分发挥模糊逻辑和神经网络各自的优势,仿真结果证明了所建模型的有效性。笔者对常规模糊神经网络同时进行了实验比较,本文提出的方案明显优于一般模糊神经网络。通过开发Matlab/GUI界面,使仿真过程立体化,更接近工程实际应用,具有直观、可视化等特点,因此本文提出的预测模型具有一定的实际应用前景。参考文献:
[1]
唐朝伟, 何国田, 徐昌彪, 等. 神经网络在采煤工作面瓦斯涌出量预测中的应用[J]. 计算机应用, 2007,27(12): 202-204.
[2]
王景山, 宋金栋, 张聪, 等. 矿井瓦斯涌出量预测方法综述[J]. 能源技术与管理,2008(4): 49-51.
[3]
朱红青, 常文杰, 张彬. 回采工作面瓦斯涌出BP 神经网络分源预测模型及应用[J].煤炭学报, 2007, 32(5):504-508.
[4]
杨新, 张陶红, 余刚, 等. 基于ANFIS的选矿产品成本预测模型[J]. 系统仿真学报,2007,19(24):5688-5691.
[5]
傅惠, 许伦辉, 胡刚, 等. 基于Sugeno型神经模糊系统的交通流状态预测算法[J]. 控制理论与应用,2010, 27(12):1637-1640.
[6]
杨奎河, 王宝树, 赵玲玲. 模糊神经网络在非线性短期负荷预测中的应用[J]. 控制理论与应用,2004,21(5):791-794.
[7]
王士同. 神经模糊系统及其应用[M].北京:北京航空航天大学出版社,1998: 210-245.
[8]
刘金锟. 智能控制[M]. 北京:电子工业出版社,2009: 162-164.
[9]
金耀初, 蒋静坪. 一种模糊神经网络及其应用[J]. 浙江大学学报,1995,29(3): 340-347.
[10]
修杰, 夏长亮, 王世宇. 开关磁阻电机的pi.sigma模糊神经网络建模[J]. 电工技术学报,2009,24(8):46-51.
[11]
彭晓波, 桂卫华, 李勇刚, 等. 动态T.S递归模糊神经网络及其应用[J].系统仿真学报,2009,21(18) :5636-5644.
[12]
曲.采煤工作面瓦斯涌出量预测的神经网络模型[J].中国安全科学学报, 1999,9(2):42-45.
[13]
刘思峰, 谢乃明. 灰色系统理论及其应用[M]. 北京: 科学出版社,2008: 48-52.
[14]
CHOLEWO T, ZURADA J M. Sequential network construction for time series prediction[C]// Proceedings of the IEEE International Joint Conference on Neural Networks. Houston:IEEE, 1997: 2034-2039.
关键词:塔机监测;嵌入式Linux;QTE;GUI;实时性
中图分类号:TP368.1 文献标识码:A
1 引言(Introduction)
随着国内经济的迅速发展,中国建筑业一直持续高速增长,与此同时,建筑作业的密集化导致同一工作区域往往存在多台塔机同时作业。由于驾驶员或地面指挥人员误判,现场塔机相互碰撞、倒塔、碰撞周围障碍物的事故时有发生,如何有效地监测塔机各项运行状态,并提供给驾驶员一个明确的外部状态信息,成为解决问题的关键。考虑到驾驶舱有限的环境限制,本设计采用基于Linux平台以及QTE库设计的嵌入式GUI,其交互界面友好,操作简便。
2 系统方案设计(Scheme design)
(1)硬件平台选择
ARM处理器在嵌入式领域具有领先的性能/功耗比,并且随着ARM公司的发展,该处理器拥有广泛的第三方支持,使得基于ARM的开发更为灵活。搭载ARM1176JZF-S内核的S3C6410处理器采用64/32位内部总线架构,使得其在32位处理器的功耗上能够达到64位处理器的速度。同时该处理器强大的硬件加速器提供了优秀的视频、音频与二维图形的处理速度。基于此,选择使用S3C6410作为本系统核心处理器。
(2)操作系统选择
作为实时性要求较高的嵌入式系统,稳定性是对操作系统的基本要求。而Linux则具有良好的稳定性[1],借助Linux优秀的跨平台能力,可以在PC虚拟机上搭建Linux平台环境,交叉编译ARM平台上运行的程序,提升开发效率。通过对Linux内核的裁剪,可进一步缩小系统体积,减少不必要的资源占用[2]。构建最适合塔机监测界面的系统平台。
(3)嵌入式图形库QTE
Linux桌面GUI系统一般都基于X Window系统,但X Window本身并不是一个直接的图形操作界面,它只是作为图形环境与UNIX系统内核沟通的中间桥梁[3]。而庞大臃肿的X Window并不适合在嵌入式系统中运行,因此本系统采用Qt的嵌入式版本QTE图形库。QTE直接取代了X Server及X Library等角色,仅采用Framebuffer作为底层图形接口,从而大大减少了系统开销[4]。并由于QTE良好的可移植性,可裁剪的模块化设计,使得其十分适合嵌入式系统设计。Qt/X11与QTE系统架构对比如图1所示。
3 系统设计框架(Design framework)
考虑到嵌入式系统的限制性,本系统内部使用轻量级的SQLite数据库进行数据管理,并优化了线程间的调度与防碰撞算法。系统分别对接收到的WiMi-net无线模块与传感器数据做分包提取与模数转换,在得到系统能识别的数据后将用户输入信息(本地塔机高度,前后臂长,坐标位置,工地大小,形状,障碍物信息等)一起存入数据库,数据库将得到的数据送入防碰撞算法模块进行分析,并模拟运行状态显示到LCD上。
GUI的设计需要考虑系统与驾驶员的接口,主要的交互在于驾驶员对系统数据库,无线通讯的管理,以及系统反馈给驾驶员塔机运行状态的清晰显示。其中又包括了系统工作状态报告,塔机正常运行报告,危险状态预警,界面调节功能等。由此设计塔机监测系统用例图如图2所示。
系统主界面如图3所示,右侧状态栏用来提示系统工作状态与塔机危险状态预警,包括碰撞预警,异常状态预警等。同时当前塔机各项运行参数在下方实时显示,方便驾驶员清楚地了解当前塔机运行情况。左侧是工作区域模拟运行区,系统允许同时监测最多16个塔机,本塔机为蓝色,其他塔机为绿色,当有大概率碰撞危险产生时,以红色间断闪烁为警示。可以使用滑条缩放该区域,方便监视整个工地或是单个塔机,方向键控制平移,也可以使用触摸笔在屏幕上进行拖动。
4 系统核心技术(Key technology)
(1)Linux内核裁剪
基于Linux-3.12.7版本的内核而言,我们不需要也不应该将其完整地运行到受到资源限制的嵌入式系统中去。根据系统的实际需求,我们只需要保留网络服务、各通信口相关驱动、10.4寸触屏驱动、UDA1341音频芯片驱动、显卡驱动、声卡驱动以及其他保证系统正常运行的后台服务。在虚拟机中进入Linux-3.12.7源码包,输入make xconfig进入内核配置。在选择相应的配置时,有三种选择方式,Y表示将该功能编译进内核;N表示不将该功能编译进内核;M表示将该功能编译成可以在需要时动态插入到内核中的模块[5]。
在Makefile文件中修改硬件平台ARCH = arm以及交叉编译器CROSS_COMPILE = arm-linux。输入make dep编译相关依赖文件,然后采用gzip压缩方式编译,执行make zImage,得到内核压缩镜像文件zImage并下载到S3C6410运行适合本系统的Linux内核。
(2)QTE基本库裁剪
(3)Qt与SQLite数据库连接
5 结论(Conclusion)
本文提出了一种基于Linux平台与QTE库的塔机监测防撞系统GUI设计方法,在减少系统体积的同时提升了系统的响应速度,并采用LCD触摸屏加强了系统的交互能力。实验证明,该系统能实时显示塔机各项工作指标的功能,并在系统处于危险运行状态时及时警告驾驶员,将事故发生率降到最低。后续的工作将在进一步优化内存管理与防碰撞算法方面展开。
参考文献(References)
[1] 李亚锋,欧文盛.ARM嵌入式Linux系统开发[M].北京:清华大学出版社,2007.
[2] 韩少云,奚海蛟,谌利.ARM嵌入式系统移植开发实战[M].北京:北京航空航天大学出版社,2012.
[3] 周利.用Qt编制Linux中X-windows下的应用程序[J].电脑编程技巧与维护,2000(1):17-19.
[4] Jasmin Blanchette,Mark Summerfield.C++ GUI Programming with Qt4. Second Edition[M].Prentice Hall,2008.
[5] 徐晨辉.嵌入式Linux内核裁剪及移植的研究与实现[D].上海:东华大学,2009.
[6] 游燕珍,赵国峰,徐川.基于Qt/E的嵌入式GUI的研究及其移植[J].微计算机信息,2008(14):120-123.
[7] Grant Allen,Mike Owens[美].杨谦,等,译.SQLite权威指南[M].北京:电子工业出版社,2012.
作者简介:
关键词: 嵌入式GUI; Linux; Qt/Embedded; 半导体激光器
中图分类号: TN919?34 文献标识码: A 文章编号: 1004?373X(2014)20?0116?04
Development of embedded GUI for semiconductor laser driving power supply
WANG Xue?li, LOU Xiao?ping, LIU Feng, ZHANG Yin?min
(Beijing Engineering Research Center of Optoelectronic Information and Instrument, Beijing Information Science &Technology University, Beijing 100192, China)
Abstract: The embedded GUI has high portability and tailoring performance. The embedded GUI based on Qt/Embedded can be transplanted to the embedded operating system expediently. The design of embedded hardware, setup of Qt/ Embedded development environment in Linux, development of Qt application program and process of transplantation to embedded Linux development board are introduced. The method and idea to develop the graphical control interface of semiconductor laser driving power supply by Qt/Embedded are proposed. The graphical interface to control the semiconductor laser driving power supply was realized successfully.
Keywords: embedded GUI; Linux; Qt/Embedded; semiconductor laser
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驱动源连接进行数据的传输。
图1 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 系统应用程序开发架构
2.1 串口通信的实现
在Qt中并没有特定的串口控制类[8],大部分使用第三方写的qextserialport类。该类包含两个类:QextSerialBase类和Posix_QextSerialPort类,后者继承前者,而QextSerialBase类又继承自Qt软件自带的QIODevice类。在QextSerialBase类中涉及到了一个枚举变量QueryMode,它有两个值Polling和EventDriven ,Polling指的是查询方式读/写串口,EventDriven是事件驱动方式。 事件驱动方式就是使用事件处理串口的读取,一旦有数据到来,就会发出readyRead()信号,就可以关联该信号来读取串口的数据。
在事件驱动的方式下,串口的读/写是异步的,调用读/写函数会立即返回,它们不会冻结调用线程。而查询方式Polling读/写函数是同步执行的,信号工作在这种模式下是不起作用的,但这种模式下开销较小,可以建立定时器来读取串口的数据,并将结果显示在Qt的图形用户界面上。这里采用Polling查询方式读/写串口。设置一个100 ms的定时器,通过Qt特有的信号与槽机制,将定时溢出信号关联到读串口槽函数上,实现数据的实时采集显示。
程序流程如图3所示。首先新建一个串口类,设置串口通信的属性,最常见的属性设置包括通信端口、波特率、数据位、奇偶校验、停止位以及控制流等,然后读/写串口。
图3 串口通信流程图
每个设备端口在/dev目录下都有一个对应的文件,Linux下的文件用文件描述符来描述,它指向内核中每个进程打开的文件记录表。串口资源的文件路径是/dev/ttyO*,因此对串口的操作就像对普通文件的操作一样,部分操作程序如下:
struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
QString portName ="/dev/ttyO2";
myCom=new Posix_QextSerialPort(portName,myComSetting,QextSerialBase::EventDriven);
myCom?>open(QIODevice::ReadWrite);
QByteArray temp=myCom?>readAll();
2.2 软键盘的调用
文中设计的软键盘包括字母、数字的输入、大小写字母的切换以及退格、回车等功能。在Linux环境的Qt Designer下,创建一个新的Widget,将Buttons选项中的PushButton按键拖入到软键盘区域内,然后根据需要修改每个按键上面的文本属性和名字属性。
软键盘的实现是基于信号与槽机制 [9]。利用Qt的多信号映射机制,首先使用QSignalMapper类来捆绑不同按键所发送的一系列无参数信号,并将其转化为有参数的信号,实现一个函数可以响应不同按钮的功能;然后需要建立每一键值对应的信号与槽之间的关系connect(ui?>pushButton, SIGNAL(clicked()),&mapper, SLOT(map()));最后将所有的字母和数字通过多信号映射连接到槽函数中,将键值传递给焦点控:connect(&mapper,SIGNAL(mapped(QWidget*)),this,SLOT(buttonClicked(QWidget*))),当有按键按下时,mapped(QWidget*)信号会触发buttonClicked槽函数,在buttonClicked函数中发送按键的ASCII码值信号调用sendCharacter(QChar)槽,从而实现正确的键值输入。界面设计如图4所示。
图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文件,然后编辑该文件:
#!/usr/bin/env xdg?open
[Desktop Entry]
Name=Serial
GenericName=Demo App
Icon=/forlinx/web/lighttpd/webpages/apps/images/current.png
Exec=/forlinx/web/lighttpd/webpages/shell/current.sh
Type=Application
ProgramType=gui
current.png是一个32×32的PNG图标文件,可根据自己的需要制作并存于相应路径下。交叉编译生成的二进制文件current放于forlinx/qt/bin目录中。current.sh是编写的shell脚本,当用户点击界面图标时会自动执行脚本文件里的命令:
#!/bin/sh
if test ?e /dev/fb0;
then
width=′fbset | grep ′geometry′ | awk ′{print $2}′′
height=′fbset | grep ′geometry′ | awk ′{print $3}′′
let height=height?38
geo=′echo $width\x$height+0+0′
fi
pidof matrix_gui > /dev/null 2>&1
if [ $? == 0 ]
then /forlinx/qt/bin/serial ?geometry $geo$*
else
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0
/forlinx/qt/bin/current ?qws ?geometry $geo$*
fi
如果需要开机自动运行程序,可以编辑启动时的执行文件/etc/init.d/rcS,将启动程序路径和可执行应用程序名添加到这里,就可以实现系统启动时程序的自动运行,在嵌入式主板上运行效果如图5所示。
4 结 语
嵌入式系统的实时性、高可靠性以及友好高效的GUI被广泛用于工业控制当中。基于Qt/Embedded设计的嵌入式控制界面实现了与单片机的串口通信、文字的编辑、控件的载入和显示、数据的保存记忆、软键盘的调用等功能。本文根据光纤激光器泵浦源的特点,以设计泵浦源驱动的人机交互界面为前提,结合用户需求和Qt/Embedded特点来开发嵌入式控制面板。详细介绍了基于Qt/Embedded的嵌入式应用程序的开发过程,并成功移植到嵌入板中控制LD正常工作。
图5 在主板上的运行效果图
参考文献
[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.
【关键词】多点无线;通信系统;设计
【中图分类号】TN92【文献标识码】A【文章编号】1672-5158(2013)07-0110-01
1 引言
处于如今高速发达的信息技术时代,不断推出了各种形式的无线通信应用产品[1]。然而低成本与便捷性这两个方面作为无线通信技术重要的效果参考与性能衡量标准,促使其可以广泛地应用于工业领域的无线控制系统、家庭便携式的智能化建设、小型模式的无线数据终端等各种无线信号传输系统的具体化环节,这已经成为相当具有研究价值的理论课题。
2 点对多点式无线通信系统的处理
(1)无线通信系统的信号处理
无线通信系统的信号处理作为点对多点式无线通信系统处理方式的重要实现环节。对于应用Matlab实现无线通信系统信号处理的具体化功能,借助Matlab本身提供的处理工具箱Toolbox中各种形式信号处理函数对相应的信号进行实质性处理。对于信号处理的GUI设计与实现,是在无线通信系统的基础上对信号处理有各个细致划分的功能模块需求基础之上,选择处理工具箱中合适的具体某项信号处理函数,依据信号处理函数的输人与输出各种形式的参数类型需求,在GUI操作界面上使用按钮、单选按钮、编辑文本框与列表框等各种功能的界面控件来对各种实现目的的调制与解调形式、编码与解码形式与通信信道类型来进行相应的选取,并且达到各种类型输入参数的设置目的[2]。操作界面不断需要实现和用户对话交流的优良性与有效性,还应当更加重要操作界面的简易性与系统实现的功能性,把内部功能架构布署与外部结构实体操作界面实现有机的功能性结合,使得无线通信系统相应的用户图形操作界面能够得到理想的实现效果。
(2)通信信号处理的GUI设计
点对多点式无线通信系统处理还应当强化信号处理GUI的设计与实现环节,信号处理相应的GUI设计主要需要考虑三个具体的方面因素。其一为应当依据无线通信系统相应的信号设定实现功能,此信号系统能够划分为若干个功能模块,由于每个具体功能模块的布署会呈现的不同特点,因此能够确定出信号处理GUI设计不同的具体实现功能;其二为对于信号中的每个功能模块设计,应当设计每个功能模块所构成的图形用户操作界面的具体功能,从而可以达到无线通信信号设计GUI功能的实现目的;其三为位于通信信号的编程实现环节中,应当构建好各个系统功能模块之间的关联性质[3]。
3 点对多点式无线通信系统的设计
(1)通信信号输入的模块化设计
对于输入到点对多点式的无线通信系统中的有关通信信号,其能够把工作区域的有关数据信息视为输入操作的对象,此时也应当选取相应的信号作为输入操作的对象,比如语音信号,其主要使用单选按钮来实现调控屏蔽的设定功能。如果选取实时采集相应的语音信号时,应当点击“开始”按钮,然而会弹出相应的文件对话框,程序设置对于wav格式的文件实行合适的筛选处理,从而能够完成信号输入功能模块的工作需求。
(2) 控制操作面板的系统设计
在控制面板系统设计时,应当选取适当的频率作为信号数据参数,关于进行无线通信文件的设计过程,应当需要实现程序的编写操作,合理地使用相关的函数参数,确保有关数据信息的能够及时读取,充分地使用点对多点式无线通信系统的相关文件,用于满足各个参数变量之间的数据参数传递,因此应当使用按钮实现相应的控制,尤其是“开始通信”等这一系列的功能控件,从而能够启动通信信号相应的对话框,再实现通信信号的数据传输功能,设定相应的信号传输参数[4]。
(3)点对多点的通信界面设计
首先选取GUl对象,通过实现GUIDE应用操作程序的设计来确认GUIDE的相应组态,在进行通信操作界面的具体过程中,对于实行信号处理的系统而抽象出来的各个编程环节应当进行合适的设计。对话框的相应选项应该包含窗口重画执行、命令行访问、生成文件选择与生成回调函数原型等方面内容,整功能配置的图形用户操作界面设计实现的背景颜色。作为Matlab相应的接口设计编辑器组件的操作实现平台,其中应当包括全部的用户操作界面,图形用户操作界面与单选按钮、编辑框、静态文本、列表框和弹出菜单等相应的控制选择。
4 点对多点式无线通信系统的测试
(1)无线通信系统
在无线通信系统的程序应用设计过程当中,能够建立相关的应用操作程序,根据其来提供和GUI控制程序相关联的架构体系。其作为一种相当有效的无线通信系统操作程序编程形式,全部的操作代码应当使用无线通信处理程序中的M文件达到目的实现,促使M文件会存在多个不同类型的项目通过UI操作程序的使用与GUI的任意程序帮助无线通信系统程序实现初始化操作。
(2)信号发送系统
信号发送系统之中对应的发送功能实现应用是经过发送系统中的编码功能模块从而进行的,其通常包含信源编码与信道编码两种形式。信号发送系统会执行相应数字信号的发送操作,对于循环码形式的编码与错码进行相应的统计分析。信源编码函数通过M文件编辑设备实现执行目的,能够充分地发挥出信源编码的相应功能,在信道编码的实际操作执行过程中,能够应用操作工具箱中的信源编码功能实行相应的矩阵转换目的,从而进行重新编码,同时应该保证在信道编码中相应的输入变量函数。
(3)无线接收系统
无线接收系统应当合理地提升TRX-CE的相应高度,如果Tx-EN处于低状态时,nRF905将会开始进入ShockBurstTM的接收形式,然后在650us之后,nRF905会取得有效监测的效果,能够实现有效的数据接收[5]。在进行nRF905的相关检测时,载波检测会达到一定程度的置高状态,同时无线通信接收将会形成相对应的地址与其发生匹配。对于数据信号的接收功能,nRF905应当可以获取到地址和相对应的CRC校验位,从而能够得到相应的提升。当微控制器把TRX-CE置于低状态时,nRF905则将会进入空闲的形式,其主要是通过SPI口,确保其能够在第一时间可以进入到ShockBurstTM的接收形式,然后能够分别进入发送形式,最终进入到关机形式。如果正在进行一个数据包的接收操作时,TRX等各种有关设备则将会发生相应的变化,nRF905能够改变其相应的工作形式,避免发生相关的数据丢失。
5 结束语
点对多点式无线通信系统存在着相对应的微波信号频率段,点对多点式无线通信的数据信号是在空中实现传输,并且在这实际传输过程当中,应该会发生衰落与时延等各种相关的现象,因此应当强化点对多点式无线通信系统的理论设计,促使其不断地趋于完善的应用阶段。
参考文献
[1] 吴俊晨,任文成.高空平台无线通信系统设计[J].无线电通信技术,2003,(01)
[2] 郑宜忠,孟卫华.点对多点微波通信系统跳频同步的设计实现[J].无线电通信技术,2008,34(3)
[3] 李树鲁.时分多址(TDMA)在点对多点无线通信系统中的应用[D].山东大学,2005