基于Web浏览器的GPS定位地图的下载与处理
2012-06-26陈志华
卢 灵,陈志华
(暨南大学 信息技术研究所,广东 广州 510075)
目前,基于GPS定位电子地图的获取主要是通过基于Mapinfo制图工具制作的电子地图,很多电子地图的获取都是直接由专业的制图授权公司提供。针对这种情况,提出了一种基于Web网页下载Google电子地图的方式获取GPS定位地图的方法,使得电子定位地图的获取变得更加方便。
1 GPS定位信息的获取
GPS定位信息需要通过GPS模块接收卫星定位信息,GPS模块每一秒钟会接收一次GPS定位信息,按照GPS标准协议格式输出,用户可以根据GPS标准协议格式解析出从GPS模块[1]接收过来的GPS定位信息,由于本设计只需要使用到经纬度信息进行定位,所以,需要解析出GPS模块传输过来的经纬度信息。
使用串口2作为GPS模块的控制设备,在Linux操作系统中,输入指令cat/proc/devices可以查到串口2在Linux设备文件系统中对应的设备文件名为”/dev/ttySAC2”,打开这个文件,即:
因为GPS模块使用串口通信,所以需要设置串口通信的方式和波特率等信息。在串口通信设置完成之后,在GPS接收程序中定义一个结构体,用来存放串口解析出的GPS定位信息:
2 GPRS无线网络通信
GPRS模块负责整个网络通信,由GPRS无线通信[2]实现与服务器的通信和GPS定位电子地图的下载。
本设计采用SIM300芯片来实现GPRS模块无线通信,SIM300 GPRS模块的初始化启动流程如图1所示。
使用串口1来控制GPRS模块,在Linux操作系统中,串口1对应的设备文件名为“/dev/ttySAC1”,打开该文件
设置好串口1之后,就可以在Linux操作系统管理GPRS模块。
图1 SIM300的初始化启动流程
按照图1中给出的初始化流程,分别向串口发送AT指令,在Linux操作系统下定义了负责发送控制命令和接收GPRS信息函数:write(fd,send_buf,strlen(send_buf))和read(fd,rcv_buf,buf_len)。其中write函数中的send_buf就是需要发送控制GPRS模块启动和通信的AT命令的字符串,如果发送正常,返回值会大于0,否则,发送失败。GPRS模块初始化需要分别发送字符串“AT”,“AT+CREG?”,“AT+CGREG?”,“AT+CSQ”,如果每次都能够正常发送,就可以开始GPRS无线网络通信;read函数中的参数rcv_buf是GPRS接收数据存放的缓冲区,buf_len是缓冲区的最大长度。
GPRS模块主要是为了实现无线网络数据传输,因此,需要对GPRS模块连接网络进行设置启动。设置流程如图2所示。
图2 GPRS连网流程图
如图2所示,GPRS连接网络需要设置一些连接网络准备条件,如连接网络数据收发格式、设置用户名和密码等。首先,为了发送数据方便,关闭发送数据时带上“<>”标记号,并且关闭接收数据时带上IP包头,这主要是在接收数据的时候为解析IP数据包提供方便。然后是设置用户名和密码。最后,建立一个TCP连接,在“IP地址”填写需要连接的IP地址,且服务器和客户端端口号设置应一致,建立TCP连接主要是提高数据传输的可靠性,TCP是面向可靠连接的,这样就完成了GPRS无线网络TCP通信,可以进行TCP无线网络连接。
3 基于VC服务器的制作
3.1 服务器与GPRS模块实现连网
服务器需要与GPS定位终端实现GPRS无线通信,因此,服务器需要建立网络连接。
VC下的MFC[3]提供了丰富的网络套接字处理函数,处理流程如图3所示。
图3 服务器网络连接流程图
首先,需要为服务器和客户端创建网络套字,通过套字来进行网络通信,在创建好套字之后,必须把网络事件关联到窗口事件中。MFC中通过函数WSAAsyncSelect将网络事件关联到窗口中,在网络事件关联处理完成之后,可以读入窗口中输入的IP地址和端口号,然后使用bind函数绑定IP地址和端口号,最后,使用listen函数侦听客户端连接。
3.2 服务器的Web网页浏览下载GPS定位地图
电子地图是GPS车载定位的最终目的,是通过服务器Web浏览器实现下载Google电子地图定位的,所以需要实现服务器的Web网页浏览。
在MFC下添加Web浏览器控件。只需要用m_web⁃Browser.Create函数创建一个Web浏览事件,通过这个事件实现Web网页浏览,然后使用函数m_webBrowser.Navi⁃gate函数连接需要连接的网页。针对 Navigate(URL,NULL,NULL,NULL)中的参数URL做一个详细的说明。
URL是Web浏览器需要浏览的网页,由于GPS定位需要浏览到Google电子地图网页,所以,需要对Google电子地图网页访问参数详细了解。下面是一个Google静态电子地图网页地址的格式:
其中:center是地图的中心位置,一般输入经度和纬度;size是电子地图的总大小;zoom是电子地图的放大比例;maptype是地图的移动方式;markers是中心点标记;key是网址申请密锁;sensor是使用用户传感器确定用户位置。
有了Google静态地图网页的具体参数格式,就可以根据这些参数得到所需要的电子地图。通过GPS模块得到车辆的经纬度定位信息,在URL参数center后面填写GPS定位信息即可,然后在markers后面同样给出定位点标记方式,最后设置电子地图大小和缩放比例,并把包含所有Google地图参数信息的URL作为Web网页的访问地址,就可以下载到GPS定位电子地图。
3.3 电子地图的处理
由于通过Web网页下载的地图只是网页形式的地图,要通过CSocket网络套接字传输地图。首先,需要将网页地图转换为Bmp位图格式形式保存起来,然后再将Bmp位图电子地图转换为BYTE数组格式通过CSocket网络套接字传输出去。
VC的WebBrowser控件有一个函数URLDownloadTo⁃File,可以实现将Web下载的电子地图保存起来,该函数完整格式为:URLDownloadToFile(NULL,URL,PATH,0,NULL),只要在PATH下面给出网页图片的存放路径,就可以将网页下载的电子地图保存。
电子地图下载完成之后,需要将电子地图转换成BYTE形式保存,才能直接发送到GPRS无线网络接收端。Bmp位图包含4个内容[4],即位图头文件、位图信息头、位图彩色表和位图数据。位图头文件包含了位图标示、位图总大小和位图信息头地址到实际像素数据之间的字节偏移量;位图信息头文件包含了位图大小、高度、单位像素占用比特位数分辨率等信息;位图彩色表包含RGB三色度的分量强度;位图数据就是实际位图像素存放数据。根据位图的内容信息,一幅位图的所有信息都在位图数据中,位图头文件和位图信息头文件包含了位图的一些参数数据,所以,要实现位图保存到BYTE类型的数组中,就需要将位图的头文件、信息头文件和位图数据都读入BYTE类型的数组中。具体算法如图4所示。
如图4所示,首先,读入位图的头文件,头文件中包含了位图文件类型(bfType)、文件大小(bfSize)和位图头文件地址到位图数据之间的偏移量(bfOffBits)这几个重要信息,由位图类型检查读入文件是否为Bmp位图,标志为“BM”,由文件大小检查Bmp位图是否损坏;位图信息头的大小等于位图头文件地址到位图数据之间的偏移量减去位图头文件大小,计算式(伪代码)为:
图4 位图转换为BYTE数组保存算法流程图
位图数据大小等于位图文件大小减去位图头文件地址到位图数据之间的偏移量,计算式(伪代码)为:
有了位图信息头文件大小和位图数据大小,就可以在内存空间中申请位图相应信息数据的存放空间,然后将这些位图数据复制到申请的内存空间,可以使用VC提供的file.Read函数实现位图数据的复制。
3.4 服务器系统设计
服务器主要实现3个功能,即连接GPRS无线网络、电子地图的获取和处理。
首先,服务器连接GPRS无线网络,连接成功之后,开始接收GPRS传输过来的数据,包含一些对于电子地图的处理功能指令,主要有3个指令:获取电子地图指令、放大电子地图指令和缩小电子地图指令;其次,在接收到GPRS指令之后,服务器需要根据接收到的指令构建Web浏览器的URL连接Google电子地图地址,设置好连接参数;最后,将Web浏览器接收的电子地图处理并发送到GPRS无线网络终端。整个流程如图5所示。
首先,服务器需要实现与GPRS无线网络连接,在VC中,需要使用CSocket网络套接字实现与GPRS模块的点对点连接,连接成功后,服务器开始侦听GPRS网络通信连接,当接收到GPRS传送过来的控制指令之后,判断是否获取电子地图的数据,如果是,就将这些数据构建Web访问Google电子地图网页的URL,从Google电子地图网页上获取GPS定位地图。在获取到需要的电子地图之后,接下来就是对电子地图的处理。
图5 服务器系统流程图
电子地图是以网页的形式下载到服务器VC控制界面上的,需要先将电子地图保存成Bmp位图格式,为了方便网络传输,还需要将保存的Bmp位图转换成BYTE数组格式,最后通过网络发送到车载终端,由GPRS无线网络通信模块接收数据并保存,最后将保存的图片数据在终端显示出来。
4 仿真结果与分析
GPS定位信息接收数据打印输出如图6所示,从图6中可以看到GPS协议格式几个常见参数的信息,如GGA,GLL等信息,并且给出了经纬度提取出来的信息,根据GPS接收的经纬度信息可以直接用来作为服务器定位参数。服务器端仿真图如图7所示,在接收到GPRS无线网络传输过来的经纬度信息之后,开始下载电子地图,显示结果如图7所示,并自动完成对图片的处理,并发送到GPRS终端,完成GPS定位终端电子地图的下载。结果可靠、正确。
5 结束语
针对GPS定位系统中地图获取问题,提出了一个基于Web浏览器下载Google定位地图的方案。该方案详细地分析了GPS定位信息获取和GPRS无线网络通信实现,并通过GPRS将GPS定位信息发送到VC制作的服务器,服务器在接收到GPS定位信息后构建Web网页访问Google地图网址URL,并最后实现GPS定位地图的下载,通过对下载地图处理,实现将地图传输到GPS定位终端,最终实现Web浏览器下载和处理GPS定位地图。整个设计可靠,而且解决了图片网络传输的难题,并且地图获取方案简单,具有很好的市场应用价值。
[1]张志强,王才.基于GPS/GPRS的车辆监控系统中车载台的设计[J].自动化与仪器仪表,2007(5):17-19.
[2]刘宪鹏,吴长贵,凌筱清.基于GPRS远程显示系统的设计与实现[J].微计算机信息,2011,27(1):124-126.
[3]刘锐宇,梁水,宋坤.Visual C++开发技术大全[M].北京:人民邮电出版社,2009.
[4]徐慧.Visual C++数字图像实用工程案例精选[M].北京:人民邮电出版社,2004.