欢迎来到天天文库
浏览记录
ID:27472448
大小:60.00 KB
页数:5页
时间:2018-12-04
《Dragonboard 410c开发板应用:使用Python脚本解析GPS报文位置信息.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Dragonboard410c开发板应用:使用Python脚本解析GPS报文位置信息 dragonboard410c是一款非常强大的开发板,其自带了GPS,wifi和高性能的图形处理单元,可以方便的实现物联网中的各项功能需求,GPS作为物联网设备中常用的功能,可以方便的实现对设备的定位,是许多物联网应用的基础,这篇blog将向大家简单的介绍如何使用Python脚本在dragonboard410c上解析GPS报文数据。 首先我们需要了解GPS报文格式,这里我们介绍和使用的是目前行业推荐的常用的GPS报文
2、格式,如下: d.推荐定位信息(RMC) $GPRMC,,,,,,,,,,,,*hh UTC时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) 地面速率(000.0~999.9节,前面的0也将被传输) 地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输) UTC日
3、期,ddmmyy(日月年)格式 磁偏角(000.0~180.0度,前面的0也将被传输) 磁偏角方向,E(东)或W(西) 模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效) e.地面速度信息(VTG) $GPVTG,,T,,M,,N,,K,*hh 以真北为参考基准的地面航向(000~359度,前面的0也将被传输) 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输) 地面速率(000.0~999.9节,前面的0也将被传输) 地面速率(0
4、000.0~1851.8公里/小时,前面的0也将被传输) 模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效) 看到上面的格式后,结合前面几篇blog中有关的XML文件的解析和python脚本消息的操作,这就非常简单了,我们如果需要读取GPS报文中的位置信息和时间信息,就可以设计下面的函数来完成: classgpsDataProcessing:def__init__(self,gpsFrame): self.gpsData=gpsFrame#getlaTItu
5、deandlongitudedatefromgpsFrame#EastLongitudeandNorthlaTItudeisabsposiTIvenumber+#WestlongtudeandsouthlaTItudeisnegative-#return(longitudeandlatitude)defgetPosition(self): #whengpsFrameisGPRMC longitude=0.0 latitude=0.0 dataList=self.gpsData.split(‘,’)
6、utcTime=dataList[1] ifdataList[0]==‘$GPRMC’ordataList[0]==‘$gprmc’: ifdataList[6]==‘E’ordataList[6]==‘e’: longitude=float(dataList[5]) elifdataList[6]==‘W’ordataList[6]==‘w’: longitude=0-float(dataList[5]) else: return-1 ifdataList[4]==‘N’ordataList
7、[4]==‘n’: latitude=float(dataList[3]) elifdataList[4]==‘S’ordataList[4]==‘s’: latitude=0-float(dataList[3]) else: return-1 elifdataList[0]==‘$GPGGA’ordataList[0]==‘$gpgga’: ifdataList[5]==‘E’ordataList[5]==‘e’: longitude=float(dataList[4]) elifdata
8、List[5]==‘W’ordataList[5]==‘w’: longitude=0-float(dataList[4]) else: return-1 ifdataList[3]==‘N’ordataList[3]==‘n’: latitude=float(dataList[2]) elifdataList[3]==‘S’ordataList[3]==‘s’: latitude=0
此文档下载收益归作者所有