李银虎 王 帅 古泉颖
(1.深圳市中冀联合通讯技术有限公司,广东 深圳 518057;2.桂林电子科技大学信息与通信学院,广西 桂林 541004)
MATLAB 是 matrix laboratory (矩阵实验室)的缩写,是1984 年由美国Mathworks 公司推出的一套高性能的数值计算、工程应用软件,它将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的分析、计算和程序设计工具,非常适合用来编写大型工程计算、科学仿真程序代码[1,2]。
而MATLAB的图形用户界面(Graphical User Interface,GUI)功能可以方便用户完成图形化界面控制软件,这种场合下的应用,使MATLAB像VC,C#等软件一样,可以实现复杂而友好的人机交互。
PC机的特点是具有较强的数据显示、分析处理能力、很好的人机界面和大容量的存储功能。本文以PC机为上位机,设计基于MATLAB的显控软件,实现了与BD/GPS卫星信号模拟器主机的通信。
MATLAB早期以矩阵运算为主,但随着科学计算可视化的需求,MATLAB 在第4 版推出了句柄图形,自此之后,MATLAB的图形界面设计功能也日益完善。如今,MATLAB 已成为集数值计算、符号运算和图形处理功能为一身的科学计算语言,满足了不同领域用户的需求。
从MATLAB 6.x版开始,它的图形用户界面设计功能有了很大提高,利用它可以方便地实现图形化窗口界面的交互方式。所谓图形用户界面,是指包含了各种图形控制对象,如图形窗口、菜单、对话框以及文本框等用户界面,也称为控件。利用这些用户界面,用户可以和计算机之间进行信息交流,并通过编写控件的回调函数(Callback),完成特定的功能。
在MATLAB 中创建图形用户界面有两种方法[3,4]。一种是在 M 脚本文件和函数文件中直接利用句柄图形指令建立各个控件对象并设置其属性;另一种方法是利用 MATLAB 提供的图形化界面设计向导(GUIDE)开发环境。采用第一种方法建立用户界面工作量大,控件属性设置、修改繁琐,一般需要设计者有丰富的经验。而采用GUIDE 开发环境进行用户界面设计操作方便、效率高,可以达到所见即所得的编程效果,利用这个开发环境,可以在很短时间内设计出一个GUI。
从Matlab6.0版本开始,Matlab软件中增加了设备控制工具箱,提供了对RS一232通信标准的串口通信的支持,负责上下位机之间的通信。
设备控制工具箱有如下特点[3]:
(1)支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信;
(2)通信数据支持二进制和文本(ASCII) 两种方式,文本方式支持 SCPI ( standard commands for programmable instruments) 语言;
(3)支持异步通信和同步通信;
(4)支持基于事件驱动的通信。
从以上MATLAB设备控制工具箱的特点可以看到,MATLAB可以满足实现串行通信的要求。
(1)GUIDE设计向导。通过GUIDE设计一个完整的GUI ,需分为两个阶段完成[4]。
第一个阶段:图形界面的结构设计阶段。利用设计向导构造整个图形界面的布局,合理设计菜单、安排控件位置等,并进行必要的属性设计。
第二个阶段:功能设计阶段。为菜单、控件编写相应的回调函数(Callback),具体实现界面的各种功能。
首先,在MATLAB 的命令窗口输入指令guide,或者通过菜单操作新建 GUI,然后选择建立新的空白(Blank GUI(Default))的用户界面选项时,就会出现工作台(LayoutEditor)界面,如图1 所示。
在其中可以拖放需要的控件并设置窗口和各个控件的属性,双击控件,就可以打开控件属性编辑器,进行控件属性设置,如图2所示。
常用的属性有:
①Tag 属性的取值是一个字符串,用来标记控件的名字,在进行程序设计时,可以利用该名字来指定控件,一般不必修改。
②String 属性为该控件显示的字符串,通过编辑文本框,用户可以方便的输入或修改已经存在的字符串。
其他还有字体设置,控件位置等等。在设计中,首先要根据需求,设计出总体方案,要考虑有几个输入参数,用到几个文本框控件(text)、几个编辑框控件(edit),几个按钮(pushbutton)等等。并把各控件的位置用鼠标拖动、排列成一个合适的布局。
图1 图形用户界面设计向导
图2 控件属性编辑器
(2)显控软件系统方案。软件设计方案可划分为三个阶段:
第一阶段:在MATLAB/GUI软件中创建用户界面.根据用户的需求,设置相应的BD/GPS模拟器参数包括的星历参数,设定初始时间、速度、位置(经度、纬度、高度)、用户轨迹生成。卫星的通道,通道参数等回显信息。如图3所示。
图3 GUI用户输入设计
第二阶段:MATLAB/GUI实现串口通信。通过GUI串口编程,将所定义的场景数据进行打包,然后按照一定的通信协议送给BD/GPS卫星信号模拟器主机,BD/GPS卫星信号模拟器主机实时地传回各通道卫星信号状态信息。串口通信设计架构如图4所示。
图4 MATLAB与模拟器串口通信
第三阶段:数据显示及分析。对用户终端存储的数据进行分析、处理,并显示测试结果,即对第二阶段存储的卫星信号模拟器上传给MATLAB数据和BD/GPS接收机数据进行处理,根据显示信息分析结果。
第四阶段:向下位机下发场景文件,实现主机启动。从官网下载星历文件,用UltraEdit软件将星历文件按一定的数据格式和处理形成场景文件。然后通过MATLAB读取文件下发给下位机,实现主机的运行,显控软件的任务就完成了。
本设计的通信端口模块的主要完成场景文件和数据帧的传送,包括选择通信的端口, 设置端口的波特率、数据位、停止位和奇偶校验。例如BD/GPS模拟器和上位机之间通信的波特率为115200等设置[5,6]。
本应用软件中使用了串口的收发功能, 发端是连接MATLAB上位机端口,下发场景文件;收端是连接卫星信号模拟器后,向上位机传送数据帧,其作用是软件和硬件的桥梁。
在用串口对象读写数据前,必需先通过数据fopen将串口对象和设备相连。连接以后,一些属性值是只是读。如InputBufferSize及OutputBufferSize等,所以必须在使用fopen函数前设置好的。我们可以用一下的语句来测试或验证连接状态。一旦串口对象和设备连接成功,就可以读写数据系统界面。
本设计采用中断的方式,可以设置当串口检测到输入缓存中到达了字符个数来触发串口中断,也可以设置时间来触发串口中断。首先对串口进行初始化串口初始化配置串口对象属性,判断物理接口是否连接,然后等待中断,在中断回调函数处理数据对象[7]。
图5是设计的串口的端口设置模块,图6是完成的整个软件运行情况。
图5 通信端口设置模块
图6 显控系统主界面
利用MATLAB 的图形用户界面(GUI)设计功能,可以开发出很友好的交互式图形界面,可以很快设计一个参数输入界面,可以使数据处理快速、灵活、直观、高效,可以迅速开发出满足各种需要的界面友好的数据处理软件。本文设计的显控软件可以很好地与主机完成串口通信,实现对BD/GPS卫星信号模拟器的控制与信息显示。
[1]陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学出版社,2000.
[2]张志涌.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.
[3]焦勇,周喻虹.基于 MATLAB 的快速图形化数据处理软件设计[J].电子科技,2005,7:40-42.
[4]余承依.基于MATLAB 数值计算的GUI 设计[J].漳州师范学院学报(自然科学版),2004,17(4):38-40.
[5]李彦,卢虎. 基于MATLAB的GUI技术在电子教学中的应用[J].电气电子教学学报,2000,22(3):77-79
[6]张立材.基于MATLAB环境的串行数据通信[J].微计算机信息,2004,20(3):100-101
[7]向先波,徐国华,张琴.MATLAB环境下PC机与单片机的串行通信及数据处理[J].单片机与嵌入式系统应用,2004,(12):27-31.