中国科学技术大学毕业论文
窗口、框架、工具栏、菜单的初始化ReplayModeNormalMode回放模式打开NMEA0183.txt文件模式串口模式打开串口读取数据NMEA码记录数据NormalModeReplayModeRecordModeStop Record停止记录,关闭文件从NMEA0183码中提取信息文档类中更新公用数据在NMEA0183.txt中记录NMEA码DataView数据更新NMEA数据更新SkyView数据更新Tracking数据更新SNR数据更新DOP数据更新 从上图中,可以看出NormalMode和ReplayMode仅在数据来源上存在区别。软件的重要环节在于数据更新系统,通过将NMEA0183码中的有用数据(即第三章中所涉及的数据)提取出来后,存入文档类中,通过SDMV的数据更新机制,更新子窗口中视图显示数据。
六个子窗口分别实现了上图中所示的数据分析功能,下面将对各子窗口的实现方式加以说明。
1) DataView窗口的实现
DataView子窗口用于显示UTC时间、经纬度、海拔、DOP、定位状态及质量等基本定位导航数据,采用CFormView类作为窗口的基类。由于显示数据较多,使用列表视图控件(List Control)可以大大的减少工作量。在窗体初始化过程中,完成列表中的各数据的名称的创建,再在数据更新过程中(OnUpdate()函数)通过调用GetDocument()函数读取文档中的相关公用数据,向列表中填写。
CDataView类框架图如下:
31
中国科学技术大学毕业论文
OnInitialUpdate()初始化OnSize()窗体大小控制CDataViewOnUpdate()数据更新OnDestroy()窗体销毁 DataView窗体效果:
2) NMEA窗口的实现
NMEA窗口用来复现正在从串口接受或从外部文档中读取的NMEA码以及当前使用的串口名和波特率。同样采用了CFormView类作为基类,数据显示采用了编辑框控件(Edit Box)。程序结构上与DataView窗口大体一致。
CGPSReceiverView类框架图如下:
OnInitialUpdate()初始化OnSize()窗体大小控制CGPSReceiverViewOnUpdate()数据更新OnDestroy()窗体销毁 NMEA窗体效果:
32
中国科学技术大学毕业论文
3) SNR窗口的实现
SNR窗口用于实现3.4中提到的多通道信号的接收质量分析。以CFormView类作为基类,运用进度条控件TextProgressCtrl来实现信噪比的柱状图显示。
CSatelliteSNR类框架图如下:
OnInitialUpdate()初始化OnSize()窗体大小控制CSatelliteSNROnUpdate()数据更新OnDestroy()窗体销毁 SNR窗体效果:
4) SkyView窗口的实现
33
中国科学技术大学毕业论文
SkyView窗口用于实现3.5中提到的天空卫星视图的分析。本文中软件是以基于MFC的OpenGL语言来实现图形显示的。由于OpenGL与MFC GDI绘图的机制不同,所以在窗体初始化时首先要建立设备句柄(Device Context)到绘制环境(Rendering Context简称RC)的映射,并将其设定为当前RC。这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。之后执行OnDraw()函数实现显示内容的绘制。在数据更新时,OnUpdata()函数通过GetDocument()获取文档中更新的数据,并使用InvalidateRect(NULL,FALSE)函数调用OnDraw()完成新数据的重绘。
CSkyView类框架图如下:
PreCreateWindo()重载,添加OpenGL必要信息OnCreate()创建基于OpenGL的窗体CSkyViewOnEraseBkgnd()设定背景重绘机制OnSize()窗体大小控制OnUpdate()数据更新OnDestroy()窗体销毁OnDraw()图像绘制SetWindowPixelFormat()设置像素格式CreateViewGLContext()生成当前RCInitGL()OpenGL初始化 SkyView窗体效果:
34
中国科学技术大学毕业论文
5) Tracking Map窗口的实现
TrackingView窗口用于实现3.6相对位置移动轨迹的跟踪分析。和SkyView窗口一样运用了OpenGL语言进行绘图。此外,TrackingView窗口加入了设置选项,可在窗口上点击右键进行原点、显示尺度的设置,开启统计功能。
CTrackingView类框架图如下:
PreCreateWindo()重载,添加OpenGL必要信息OnCreate()创建基于OpenGL的窗体CTrackingViewOnEraseBkgnd()设定背景重绘机制OnSize()窗体大小控制OnUpdate()数据更新OnDestroy()窗体销毁SetWindowPixelFormat()设置像素格式CreateViewGLContext()生成当前RCInitGL()OpenGL初始化OnDraw()图像绘制OnSetOrigin()设置当前点为原点OnReSize()调整显示尺度OnStat()打开统计功能右键下拉菜单打开设置界面
35