基于MiniGUI的主程序框架图如图3所示,为了与JUPITER 021/031通信,接收GPS定位信息,同时还要与MC35通信实现无线通信相关功能,因此在主程序中启动两个子进程来实现与子系统的串口通信。另外,使用Linux下的共享内存(shared memory)和信号(signals)机制来实现进程间的通信,用以传递定位数据等信息。GPS信息接收的子进程功能框架如图4所示。  图3MiniGUI主程序框架  图4定位信息接收子进程框图
 图5地图绘制函数流程图
当MiniGUI主程序接收到其GPS通信子进程发送的SIGUSR1信号时,就会调用相应的信号处理函数。为了实时更新定位点在电子地图中的位置,必须在该函数中读取共享内存中的最新位置信息;同时根据定位点位置的变化确定需要重绘的区域,调用MiniGUI中的InvalidateRect函数使该区域无效。通过这种方式,使得最新的位置信息实时的在电子地图上显示出来。
为了把底层图形设备和上层图形接口分离开来,提高MiniGUI图形系统的可移植性,MiniGUI中引入了图形抽象层(GAL, graphics abstract layer)的概念。在一定的GAL基础上,实现了图形设备接口(GDI,Graph Device Interface)。在程序中定义mpadraw函数为电子地图绘制函数,在主程序的MSG_PAINT消息处理时调用该函数,来完成电子地图的具体绘制工作。mpadraw函数流程图如图5所示。在具体绘制的过程中,要用到MiniGUI提供的GDI函数来完成道路、道路名、居民区等地理信息的显示。图6即为笔者实现的电子地图。  图6利用MiniGUI绘制的电子地图
结语
随着社会信息化的发展,GPS导航终端在我国有着光明的应用前景。本文中利用MiniGUI来实现车载终端的电子地图在LCD上地绘制,使地图的绘制工作脱离烦琐的底层硬件,大大的简化了此项工作,再配合GPS信号接收机实现实时定位导航的功能。同时也应该看到,本方案仍有很多方面需要改进,例如矢量化地理信息的显示及地图显示的进一步优化等。
参考文献 1 北京飞漫软件技术有限公司. MiniGUI用户手册, 2003 2 吴信才. 地理信息系统原理与方法. 北京:北京电子工业出版社, 2002 3 宋立新. 面向嵌入式操作系统的图形用户界面: [学位论文]. 杭州:浙江大学,2001 4 黑新宏,崔杜武,常斌. 基于MiniGUI的客户端PDA的研究及开发. 计算机应用, 2003, 23(4):75~77
|