搜索
bottom↓
回复: 37

【配阿莫的gps开源我发个最简单的gps信息显示项目】兄弟篇 nmea0183协议

[复制链接]

出0入0汤圆

发表于 2010-11-14 18:52:03 | 显示全部楼层 |阅读模式
关于nmea0183协议标准
ourdev_597890AGATXL.pdf(文件大小:59K) (原文件名:plugin-DescriptionNMEA.pdf)
nmea0183协议规定的数据格式如下:
$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77
$GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54
$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04
$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,,0000*72
$GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D
$GPGSV,3,1,10,18,84,067,23,09,67,067,27,22,49,312,28,15,47,231,30*70
$GPGSV,3,2,10,21,32,199,23,14,25,272,24,05,21,140,32,26,14,070,20*7E
$GPGSV,3,3,10,29,07,074,,30,07,163,28*7D
说明:NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等
1、 GPS DOP and Active Satellites(GSA)当前卫星信息
$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>
$GPGSA,A,3,16,23,31,32,14,,,,,,,,1.53,1.20,0.95*0A
<1>模式 :M = 手动, A = 自动。
<2>定位型式 1 = 未定位, 2 = 二维定位, 3 = 三维定位。
<3>PRN 数字:01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。
<4> PDOP位置精度因子(0.5~99.9)
<5> HDOP水平精度因子(0.5~99.9)
<6> VDOP垂直精度因子(0.5~99.9)
<7> Checksum.(检查位).

2、 GPS Satellites in View(GSV)可见卫星信息
$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8><CR><LF>
$GPGSV,3,2,12,42,39,118,,32,38,225,20,20,34,252,,31,34,060,34*76
<1> GSV语句的总数
<2> 本句GSV的编号
<3> 可见卫星的总数,00 至 12。
<4> 卫星编号, 01 至 32。
<5>卫星仰角, 00 至 90 度。
<6>卫星方位角, 000 至 359 度。实际值。
<7>讯号噪声比(C/No), 00 至 99 dB;无表未接收到讯号。
<8>Checksum.(检查位).
第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。其余卫星信息会于次一行出现,若未使用,这些字段会空白。
3、Global Positioning System Fix Data(GGA)GPS定位信息
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
$GPGGA,050458.000,2459.8991,N,10242.8698,E,1,5,1.20,1885.0,M,-32.2,M,,*45
<1> UTC时间,hhmmss(时分秒)格式
<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3> 纬度半球N(北半球)或S(南半球)
<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5> 经度半球E(东经)或W(西经)
<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8> HDOP水平精度因子(0.5~99.9)
<9> 海拔高度(-9999.9~99999.9)
<10> 地球椭球面相对大地水准面的高度
<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)

4、Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
$GPRMC,050459.000,A,2459.8990,N,10242.8698,E,0.67,158.73,190808,,,A*6A
<1> UTC时间,hhmmss(时分秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4> 纬度半球N(北半球)或S(南半球)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6> 经度半球E(东经)或W(西经)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也将被传输)
<11> 磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
5、 Track Made Good and Ground Speed(VTG)地面速度信息
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh<CR><LF>
<1> 以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
<2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
<3> 地面速率(000.0~999.9节,前面的0也将被传输)
<4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
<5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-11-14 18:52:28 | 显示全部楼层
回复【楼主位】bg8wj  
-----------------------------------------------------------------------
如51版面中提到的checksum计算,c语言的描述如下
sum = *data;
while(*data!='*') {
sum ^= *data;
data++;
}
计算的时候需要对整个数据帧进行计算,从$到<cr>之间的数据统统做check sum,这里的数据包括标点符号分割符。
格式是:
1.一律以 $ 符號開頭
2.$ 後是Message id. 5個ASCII Code.
3.一連串以','分開的欄位.
4.Checksum,checkum以'*'開始,後面是兩個ASCII code.
5.checksum 计算是从$开始到*之间的ASCII字符做异或运算 sum^=sum

出0入0汤圆

 楼主| 发表于 2010-11-14 18:52:45 | 显示全部楼层
回复【1楼】bg8wj  
-----------------------------------------------------------------------

另外关于gps模块中的tx rx引脚的用途。就是用来完成gps模块的nmea0183配置通讯用的。大部分的模块默认的串口电气规范是ttl232,如果需要和pc机之间连接的话是需要做电平调理的。

由此引申出的单片机通讯的问题就是,所有的双机通讯要想稳定必须建立在通讯协议的基础上,也就是数据必须经过封装的,有帧头、信息体、校验字节、帧结束符的。在《配合》一文中给出的gps帧解析部分是效率最低的,直接在串行通讯中断服务程序中解析,这样的编程只能是简单学习应用,因为这样的解析只能针对最低导航信息要求来完成。如果需要从模块中提取跟多的信息的话,则需要单独写函数完成对帧封装的信息的解析。

出0入0汤圆

 楼主| 发表于 2010-11-14 19:29:54 | 显示全部楼层
回复【楼主位】bg8wj  
-----------------------------------------------------------------------
另外关于gps模块再多说一些,我们现在所谓的因为使用12通道高精度gps模块,所以误差小于xx米的提法是错误的。在海湾战争结束后大约是在95年的时候米国已经放开gps定位精度误差控制,就是不在卫星定位信号中插入误差码,而米国宣称的gps定位精度民用为5米的确是真的。在定位精度上再也没有民用、军用的区分。军用和民用的区别在于军用的gps永远保障,而且卫星信号永久加密,每2秒换一次干扰ca码,民用gps信号得不到保障,可能随时被关停,特别是美军处于战争状态下,民用gps无一例外的会出问题。而为什么我们在买来的商品化模块会出现漂移、定位精度低,是因为我们自己没有使用差分gps(dgps)的功能,我们用的还是gps模块中误差较大的信息(我姑且称之为,快速gps方式)。快速gps功能中定位信息是估计出来的,(就像我们在ad滤波函数中滤波函数一样,对于信号的处理是预测的,计算的)当然会出现漂移、精度低。而不幸的是目前大部分的厂家一味的降低模块成本,几乎无一例外的取消dgps功能。相对于快速gps,差分gps(dgps)模式定位精度就高很多。当然要具备这种功能的模块价格也是不低的。
需要指出的是快速gps和差分gps没有本质的区别,依然是1颗卫星给出时间信息、2颗卫星给出高度信息、3颗卫星才能给出海拔、速度信息。无一例外的飞机上用gps导航就是用的dgps方法给出的位置信息。快速gps初始化的时候不需要对模块输入当前的位置信息,而普通民用差分gps需要对模块初始化后才能精确导航。普通民用差分dgps在这点上和惯导一样。
遗憾的是我们能够使用的北斗系统,就是快速gps方式。

出0入0汤圆

发表于 2010-12-24 09:56:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-24 13:57:19 | 显示全部楼层
这个也要mark

出0入0汤圆

发表于 2011-2-14 17:10:59 | 显示全部楼层
马克

出0入0汤圆

发表于 2011-2-16 22:04:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-16 22:08:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-26 13:18:49 | 显示全部楼层
。。。

出0入0汤圆

发表于 2011-2-26 17:20:01 | 显示全部楼层
比较讨厌正负数那部分...

出0入0汤圆

发表于 2011-3-9 18:32:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-15 13:39:07 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-3-15 13:52:31 | 显示全部楼层
回复【3楼】bg8wj
回复【楼主位】bg8wj   
-----------------------------------------------------------------------
另外关于gps模块再多说一些,我们现在所谓的因为使用12通道高精度gps模块,所以误差小于xx米的提法是错误的。在海湾战争结束后大约是在95年的时候米国已经放开gps定位精度误差控制,就是不在卫星定位信号中插入误差码,而米国宣称的gps定位精度民用为5米的确是真的。在定位精度上再也没有民用、军用的区分。军用和民用的区别在于军用的gps永远保障,而且卫星信号永久加密,每2秒换一次干扰ca码,民用gps信号得不到保障,可能随时被关停,特别是美军处于战争状态下,民用gps无一例外的会出问题。而为什么我们在买来的商品化模块会出现漂移、定位精度低,是因为我们自己没有使用差分gps(dgps)的功能,我们用的还是gps模块中误......
-----------------------------------------------------------------------

很遗憾地告诉你,你的理解完全错了,差分GPS与一般GPS有本质差别。差分GPS得有基准站才行的,不是接收机的类别问题。

出0入0汤圆

发表于 2011-3-21 18:07:17 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-4-9 17:35:33 | 显示全部楼层
MARK~~~~`

出0入0汤圆

发表于 2011-11-16 18:22:46 | 显示全部楼层
必须要做个标记了,刚才一直没找到

出0入0汤圆

发表于 2011-11-18 17:55:59 | 显示全部楼层
上哪能整个基准点去啊

出0入0汤圆

发表于 2011-11-18 21:20:19 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-11-20 03:11:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-3 16:06:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-29 14:16:31 | 显示全部楼层
mark党

出0入0汤圆

发表于 2012-1-17 16:43:15 | 显示全部楼层
回帖美德

出0入0汤圆

发表于 2012-2-24 20:56:00 | 显示全部楼层
MARK
头像被屏蔽

出0入0汤圆

发表于 2012-2-25 08:33:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-27 16:20:24 | 显示全部楼层
这开源精神,向楼主学习了

出0入0汤圆

发表于 2012-4-15 10:09:00 | 显示全部楼层
终于找到了,

出0入0汤圆

发表于 2012-4-18 20:09:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-5-9 22:38:25 | 显示全部楼层
好帖!正好需要呢,谢谢楼主了!

出100入143汤圆

发表于 2012-5-10 10:03:12 | 显示全部楼层
想要学习

出0入0汤圆

发表于 2012-5-29 14:49:06 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2012-5-29 15:08:41 | 显示全部楼层
必须mark!!!

出0入0汤圆

发表于 2012-11-7 15:16:52 | 显示全部楼层
正在准备弄这个东西   
资料太好了

出0入0汤圆

发表于 2012-12-1 23:11:22 | 显示全部楼层
学习了,知道了快速GPS和差分GPS的区别了

出0入0汤圆

发表于 2012-12-2 10:18:34 | 显示全部楼层
这个资料太好了

出0入0汤圆

发表于 2015-5-24 15:02:19 | 显示全部楼层
mark了,学习中

出0入0汤圆

发表于 2015-5-25 11:44:00 | 显示全部楼层
mark,学习!

出0入0汤圆

发表于 2015-11-19 18:14:13 | 显示全部楼层
学习研究
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 03:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表