NMEA是GPS 的標準protocol,她是ASCII的字串,像
$GPRMC,053322.682,A,2502.6538,N,12121.4838,E,0.00,315.00,080905,,,A*6F
這一個command是GPS Recommanded GNSS data
053322.682
是UTC Time : 格式是hhmmss.sss所以是5:33:22.682
A
代表data是valid (如果找不到衛星,就會是V)
2502.6538
是緯度,格式是degree * 100 + minutes。但是minutes是100進位,所以要/100 * 60轉為degree,轉換後就是25'02'39.228''.
N
是代表緯度是北緯
12121.4838
是經度,格式是degree * 100 + minutes。minutes一樣要做/100*60的轉換,轉換後就是121'21'29.02''.
E
代表經度是東經
0.00
是速度,因為GPS天線沒動,所以是0.00
315.00
是方向
080905
是目前的日期,格式是ddmmyy,所以是05年9月8日
- -
接著有兩個欄位沒有用,所以空著
A
是Autonomous ?
*6F
是checksum
*** 所以用google earth就知道我把天線放在哪了****
格式是:
1.一律以 $ 符號開頭
2.$ 後是Message id. 5個ASCII Code.
3.一連串以','分開的欄位.
4.Checksum,checkum以'*'開始,後面是兩個ASCII code.
5.
$GPGSV,1,1,02,14,,,37,25,,,46,,,,,,,,*7F
$GPGSV : Satellites in View
Message ID : $GPGSV
Number of Messages : 1
Message number : 1
Satellites in view : 02 目看到的衛星數
Satellite Id : 14 Satellite vehicle 以下是第一個看到的衛星,編號14
Elevation : - Elevation of satellite in degree
Azimuth : - Azimuth of satellite in defree
SNR : 37 Signal to Noise ration in dbHz
Satellite id : 25 Satellite vehicle,以下是第二個看到的衛星,邊號25
NMEA Protocol中checksum的算法:
不包含開頭的'$',一直計算到'*'之前。一個byte一個byte的作XOR.
data++; // skip the heading '$' mark
sum = *data;
while(*data!='*') {
sum ^= *data;
data++;
}
所以可以知道,連command間的','符號也加入計算。
一般NMEA的report data中,用
有些擴充協定,用來設定,例如
$PNMRX103, NMEA report rate control
可以指定NMEA report資料的頻率
GGA,GLL,GSA,GSV,RMC,VTG,ZDA,ALL
例如:
$PNMRX103,ALL,0*1A
所有的report都停止。
$PNMRX103,RMC,2*02
每2 sec送出一次RMC report
$PNMRX100 設定baud rate
$PNMRX100,0,4800,0*48
設定
Protocol : 0 : NMEA Mode, 1: Bindary Mode (不要用這一個)
baud rate: 4800 其他可以設1200,2400,4800,9600,19200,38400,57600.
Parity : 0 : None, 其他1 2代表Odd, 2代表 Even.
所以上面的example代表:使用NMEA Mode, 4800, None Parity
這些設定在reset後都消失......
雖然Manual中說明support message有GGA,GLL,GSA,GSV,RMC,VTG,ZDA但是用ALL command開啟後,發現只有report GGA,GSA,RMC,VTG.
GPS 通讯的NMEA 协议
点击数:3134 发布日期:2006-1-11 16:12:00
【收藏】 【评论】 【打印】 【编程爱好者论坛】 【关闭】
Tag:GPS NMEA协议
GPS 的通讯协议比较多,其中NMEA (National Ma2rine Electronics Association) , 0183 协议为GPS 接收机和其他航海电子产品的导航数据输出格式,是目前普遍使用且为大多数生产商遵循的协议之一,以下为其基本通讯参数及报文格式。
1. 1 GPS 串行通讯参数
波特率= 4800 ;无奇偶校验;数据位= 8 ;停止位= 1
1. 2 NMEA 0183 报文格式
NMEA 0183 协议报文的语句串(ASCII 字符) 格式全部信息可如下表示[1] :
$AAXXX,ddd. . . ddd , 3 hh < CR > < LF >
具体内容为:
$ 串头,表示串开始
AA 识别符
XXX 语句名
ddd ⋯ddd 数据字段,字母或数字
, 逗号
3 星号,串尾
hh $与3 之间所有字符代码的校验和
< CR > 回车控制符
< LF > 换行控制符
1. 3 报文示例说明
在具体的GPS 应用中,不需要用到NMEA 的全部信息,而是根据具体的工作,从中选取所需的信息,忽略其他信息。在文献[ 1 ]中,给出了用NMEA0813 的$GPGGA语句的数据格式及示例,文中以GPS 推荐的最短数据$GPRMC 语句为例,具体讨论协议串中各数据段内容。
1. 3. 1 当GPS 接收仪和卫星的通讯正常时接收到的数据中就包含如下格式的RMC 语句:
$GPRMC,055142,A,3603.3291,N,10346.3723,E,0.0,230.4,250503,1.3,
W,A *3 02
其中数据分别为:
$GPRMC 串头,其中RMC 为定位语句
055142 表示UTC 24 小时制的标准时间,格式为“时时/分分/秒秒”。根据任务还需要将其转换为北京时间格式
A 或V 表示信号接收状态,其中A表示数据“OK,V表示一个警告
3603.3291 表示纬度值,格式为“ddmm.mmmm”
N 或S 标明南北半球,N为北半球(北纬)、S为南半球(南纬)
10346.3723 表示经度值,格式为“dddmm.mmmm”
E 或W 标明东西半球,E为东半球(东经)、W为西半球(西经)
0.0 表示速度, (这里速度为0)
230.4 方位角,范围为000.0 到359.9度
250503 为UTC 的日期,格式为“日日/月月/年年”
1. 3 地磁变化(磁偏角) ,从000.0 到180.0度
W 地磁变化方向,为E或W
1. 3. 2当没有和卫星取得联系时
RMC 语句的显示格式如下:
$GPRMC, ,V, , , , , , ,270503 ,1.3,W,N *2B
nmea协议例示
最新推荐文章于 2024-05-07 13:39:37 发布