- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自助式GPS监控系统的开发与研究.doc
自助式GPS监控系统的开发与研究
摘 要:研究了GPS监控系统的工作原理,运用GPS与Web地图相结合的定位方法,基于Vc++编程实现了一种可对宠物或车辆进行实时、远程监控的自助式GPS监控系统。
关键词:GPS监控系统;串口通讯;Web地图
中图分类号:TP311
GPS是全球定位系统的英文简称。GPS技术的主要功能是可实现对载体目标位置、速度等的精确捕获及监控。已广泛应用于交通、物流、公安、海洋测绘等行业的GPS监控系统,是成功运用了GPS技术、无线通信技术、GIS技术及图像处理技术等来实现的,可以对移动车辆、设备或人、宠物的实时远程监控。
根据GPS监控系统架构的不同,主要可分为两类。一类是中心式GPS监控系统和自助式GPS监控系统。
自助式GPS监控系统是将GPS模块通过标准接口(串口、USB接口、蓝牙等)直接连接到计算机、Pocket PC等设备,该类系统一般会根据用户的需求编写不同的应用程序来供用户使用,比如自主车载导航系统、GPS轨迹记录仪等设备。本文研究的是一种基于VC++编程,通过串口接收数据的自助式GPS监控系统的实现方法。
1 串口通讯的自助式GPS监控系统的实现
1.1 串口的打开及初始化
打开串口工作区使用OpenWorkFlow()函数,其工作是启动串口工作线程,该函数没有传入参数,函数的返回值为BOOL型,表示启动串口工作区是否成功。而对串口工作区参数初始化则使用InitWorkFlow()函数,该函数的传入参数分别为串口名称和DBC结构的串口工作参数,该函数的返回值为BOOL型,表示初始化串口工作区是否成功。
1.2 串口接收GPS数据
在Vc++的编程实现中,数据接收部分通过线程运行函数Run()和数据接收函数RecieiveData()来实现。
(1)线程的运行函数。Run()函数实现对应串口的接收事件的监测,当监测到有数据到达时,接下来执行RecieiveData()接收函数进行数据接收,并发送消息通知给数据处理窗体。Run()函数没有传入参数,该函数返回值为线程结束时结束代码。
(2)数据接收函数。ReceiveData()函数实现串口数据的接收。该函数传入参数为接收数据的缓冲区的最大长度,函数会取这个值与当前缓冲区长度中较小的那个值来执行读取。该函数返回值为BOOL,其中,TRUE表示正确接收串口数据,FALSE表示接收串口数据失败。
1.3 GPS数据的解析
在接收到GPS模块中的相关数据后,还需要对数据按协议格式进行解析。如:CdataFlow对象,CdataFlow对象在接收到消息后,会将数据存储到变量中,并对缓冲区中的数据进行解析。
解析对象在接收到串口数据后,会触发OnComMsg()函数,此函数会存储数据,并调用SearchFlow()函数来查找数据包,如果查找到有效数据包,则会调用DealFlow()函数来处理数据包,并发送解码消息,由解码处理函数OnDecodeMsg()来具体解码。
(1)数据处理函数。OnComMsg()函数实现数据处理,用于处理串口接收到的数据。当串口数据接收线程监测到有数据到达时,会进行及时接收,并发送消息给数据处理窗口,数据处理窗口就会调用此函数对数据进行处理,主要是将数据存入待解析字符串中,并发送消息给主窗体,由主窗体实现数据在界面显示,并调用解析函数进行协议数据的解析。该函数的传入参数是存储接收数据的数据缓冲区的指针和接收到的数据的长度,该函数无返回值。
(2)查找协议数据包函数。SearchFlow()函数可实现从待解析数据缓冲区查找协议数据包的功能。查找数据包的标准是判断协议头和协议尾是否与协议的定义相符,如果查找到,则将协议头的位置、协议尾的位置以及协议数据包的长度存入变量中。该函数没有传入参数。该函数返回值为BOOL型,表示是否查找到协议数据包,如果返回TRUE,则表示数据缓冲区中存在协议数据包,如果返回FALSE,则表示当前的数据缓冲区中没有协议数据包。
(3)协议数据包解析函数。DealFlow()函数实现从待解析数据缓冲区中提取协议数据包的功能。当在数据缓冲区中查找到协议数据包后,调用此方法将协议数据包从缓冲区中提取出来,并发送消息给解码函数进行解码。该函数没有传入参数。该函数没有返回值。
(4)数据解码函数。OnDecodeMsg()函数可实现数据包的解码功能。当程序提取出协议数据包后,则发送消息给此解码函数,此函数即对数据进行解码,其按照相应协议对数据进行解析。该函数的传入参数为协议数据包的数据缓冲区指针和协议数据包的数据长度。该函数没有返回值。
(5)GPS定位信息解码函数。解码GPS定位
文档评论(0)