- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于MaPX的校园导航系统设计
2.2 电子地图基本功能实现
电子地图基本功能包括选择、标注、缩小、放大、漫游等。采用MapX可以很容易的实现这些功能,下面以缩小功能为例,简单介绍一下程序里如何实现地图缩小。
添加一个新的Toolbar资源。输人标题"IDR_TOOL_BARMAP"。在"IDR_TOOLBARMAP"下添加按钮,在其上绘制缩小图形来表示"缩小",其ID为ID_MAP_TOOL_ZOOMOUT。打开类向导.选择视图类CMapXView.为菜单项ID_MAP_TOOL_ZOOMOUT添加COOMMAND消息映射函数OnMapToolZoomout(),并编辑代码如下:
编译运行程序.点击缩小按钮,在电子地图上单击鼠标就会实现电子地图的缩小功能。可用相同方法实现其他标准工具的功能。
2.3 GPS数据的接收和处理
此模块完成了从串口读取数据,并对数据按照GPS所遵循的NMEA0183协议进行处理,得出经纬度坐标等信息的功能。此模块包括两个部分串口通信和数据处理。
由于GPS模块每一秒更新一次数据,当上空有4颗卫星时串口会源源不断的接收到定位数据.为了在对串口实时监控的同时还可以在前台进行一些其他的操作。采用基于多线程的CSerialPort类的串口通信方法可以很好的解决这一问题。
此模块的工作流程可分为以下几步:(1)利用CSerial-Port的InitPort()初始化串口配置。(2)如果配置成功用StartMonitoring()打开串口并创建监视串口的线程。(3)在相应的类里添加响应WM_COMM_RXCHAR消息的消息处理函数,并且在其中做接收字符处理。(4)添加定时器.在OnTimer中处理NMEA 0183格式的GPS定位数据.将提取到的纬度数据保存到相应类上的成员变量中。
2.4 目标定位和播报
该模块从GPS数据处理模块中得到经纬度坐标等信息,并且把它赋值给目标图元,通过定时器更新图元位置从而完成实时定位。
由于程序实时接收定位数据来更新图元的位置.就需要程序频繁的刷新整个图层,就会影响效率。动态图层的目的是为了加速图层的刷新率从而提高效率,设置动态图层后。每次刷新都只刷新动态图层,这样就很好的解决了这个问题。示例代码如下:
程序最后运行界面如下:
3 结束语
本文在GIS二次开发日新月益的背景下.结合校园实际特点开发了基于MapX的校园导航系统。经过调试,程序运行稳定,实现了电子地图放大、缩小、漫游等功能。程序由Mi-crosoft Visual C++6.0编译、在Windows XP下运行通过。
作者:冯正 中北大学 来源:山西电子技术