nmea 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,41 +3,9 @@ require 'rake/gempackagetask'
3
3
  require 'rake/testtask'
4
4
  require 'rake/rdoctask'
5
5
  require 'rake/packagetask'
6
- require 'rake/contrib/rubyforgepublisher'
7
-
8
- PKG_NAME = "nmea"
9
- PKG_VERSION = "0.3"
10
- PKG_AUTHOR = "Max Lapshin"
11
- PKG_EMAIL = "max@maxidoors.ru"
12
- PKG_HOMEPAGE = "http://maxidoors.ru/"
13
- PKG_SUMMARY = "NMEA (GPS protocol) parser"
14
- PKG_SVN = "http://svn.maxidoors.ru/ruby-nmea/"
15
- PKG_RDOC_OPTS = ['--main=README',
16
- '--line-numbers',
17
- '--webcvs='+PKG_SVN,
18
- '--charset=utf-8',
19
- '--promiscuous']
20
-
21
-
22
- spec = Gem::Specification.new do |s|
23
- s.name = PKG_NAME
24
- s.version = PKG_VERSION
25
- s.author = PKG_AUTHOR
26
- s.email = PKG_EMAIL
27
- s.homepage = PKG_HOMEPAGE
28
- s.platform = Gem::Platform::RUBY
29
- s.summary = PKG_SUMMARY
30
- s.require_path = "lib"
31
- s.rubyforge_project = PKG_NAME
32
- s.files = %w(README Rakefile setup.rb init.rb) +
33
- Dir.glob("{test}/**/*") +
34
- Dir.glob("ext/**/*.{h,c,cpp,rb,hpp}") +
35
- Dir.glob("lib/**/*.rb")
36
- s.test_files = FileList["test/test_*.rb"].to_a
37
- s.has_rdoc = true
38
- s.rdoc_options = PKG_RDOC_OPTS
39
- s.extensions << 'ext/extconf.rb'
40
- end
6
+
7
+
8
+ spec = eval(File.read(File.dirname(__FILE__)+"/nmea.gemspec"))
41
9
 
42
10
  Rake::GemPackageTask.new(spec) do |pkg|
43
11
  pkg.need_tar = true
@@ -67,11 +35,10 @@ end
67
35
  desc "Generate RDoc documentation"
68
36
  Rake::RDocTask.new("doc") do |rdoc|
69
37
  rdoc.rdoc_dir = 'doc'
70
- rdoc.title = PKG_SUMMARY
38
+ rdoc.title = "Nmea"
71
39
  rdoc.rdoc_files.include('README')
72
40
  # rdoc.rdoc_files.include('CHANGELOG')
73
41
  # rdoc.rdoc_files.include('TODO')
74
- rdoc.options = PKG_RDOC_OPTS
75
42
  rdoc.rdoc_files.include "ext/ruby_nmea.c"
76
43
  end
77
44
 
File without changes
File without changes
@@ -0,0 +1,45 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'nmea'
3
+ s.version = '0.4'
4
+ s.date = '2009-03-19'
5
+ s.summary = 'To use NMEA parser, you should somehow get data stream from your gps device.'
6
+ s.email = "max@maxidoors.ru"
7
+ s.homepage= "http://github.com/maxlapshin/nmea"
8
+ s.author = "Max Lapshin"
9
+ s.rubyforge_project = "ruby-nmea"
10
+ s.rdoc_options = ["--main", "README"]
11
+ s.extra_rdoc_files = ["README"]
12
+ s.has_rdoc = false
13
+ s.files = ["init.rb",
14
+ "nmea.gemspec",
15
+ "Rakefile",
16
+ "ext/nmea.h",
17
+ "serialport/serialport.c",
18
+ "ext/nmea.cpp",
19
+ "ext/ruby_nmea.cpp",
20
+ "ext/extconf.rb",
21
+ "ext/test.rb",
22
+ "lib/nmea.rb",
23
+ "serialport/extconf.rb",
24
+ "setup.rb",
25
+ "nmea.html",
26
+ "spec/mocks.rb",
27
+ "spec/scan_spec.rb",
28
+ "test/helper.rb",
29
+ "test/mocks.rb",
30
+ "test/reader.rb",
31
+ "parser/nmea.hpp",
32
+ "parser/bod.rl",
33
+ "parser/gga.rl",
34
+ "parser/gll.rl",
35
+ "parser/gsa.rl",
36
+ "parser/gsv.rl",
37
+ "parser/nmea.rl",
38
+ "parser/psrftxt.rl",
39
+ "parser/rmc.rl",
40
+ "parser/vtg.rl",
41
+ "parser/zda.rl",
42
+ "README"
43
+ ]
44
+ end
45
+
@@ -0,0 +1,1052 @@
1
+ <html><head>
2
+ <title>Glenn Baddeley - GPS - NMEA sentence information</title>
3
+ </head><body bgcolor="#CCFFFF" text="#000000" link="#0000FF" vlink="#FF00FF" alink="#FF0000">
4
+ <a name="top"><h1 align=center>Glenn Baddeley - GPS - NMEA sentence information</h1>
5
+ <h2>Contents</h2>
6
+ <ul>
7
+ <li><a href="#allgp">All $GPxxx sentence codes and short descriptions</a>
8
+ <li><a href="#interp">26 interpreted sentences transmitted by GPS unit</a>
9
+ <li><a href="#garmin">12 interpreted Garmin proprietary sentences transmitted by GPS unit</a>
10
+ <li><a href="#garminreceived">8 interpreted Garmin proprietary sentences received by GPS unit</a>
11
+ <li><a href="#latlong">Format of latitudes and longitudes</a>
12
+ <li><a href="#refs">References</a>
13
+ </ul>
14
+
15
+ <a name="allgp"><p>[ <a href="#top">Top</a> ] [<a href="index.html">Glenn's GPS Contents Page</a>]
16
+ <hr size=3><h2>All $GPxxx sentence codes and short descriptions</h2>
17
+ <pre><ul>
18
+ <li>$GPAAM - Waypoint Arrival Alarm
19
+ <li>$GPALM - GPS Almanac Data
20
+ <li>$GPAPA - Autopilot format &quot;A&quot;
21
+ <li>$GPAPB - Autopilot format &quot;B&quot;
22
+ <li>$GPASD - Autopilot System Data
23
+ <li>$GPBEC - Bearing &amp; Distance to Waypoint, Dead Reckoning
24
+ <li>$GPBOD - Bearing, Origin to Destination
25
+ <li>$GPBWC - Bearing &amp; Distance to Waypoint, Great Circle
26
+ <li>$GPBWR - Bearing &amp; Distance to Waypoint, Rhumb Line
27
+ <li>$GPBWW - Bearing, Waypoint to Waypoint
28
+ <li>$GPDBT - Depth Below Transducer
29
+ <li>$GPDCN - Decca Position
30
+ <li>$GPDPT - Depth
31
+ <li>$GPFSI - Frequency Set Information
32
+ <li>$GPGGA - Global Positioning System Fix Data
33
+ <li>$GPGLC - Geographic Position, Loran-C
34
+ <li>$GPGLL - Geographic Position, Latitude/Longitude
35
+ <li>$GPGRS - GPS Range Residuals
36
+ <li>$GPGSA - GPS DOP and Active Satellites
37
+ <li>$GPGST - GPS Pseudorange Noise Statistics
38
+ <li>$GPGSV - GPS Satellites in View
39
+ <li>$GPGXA - TRANSIT Position
40
+ <li>$GPHDG - Heading, Deviation &amp; Variation
41
+ <li>$GPHDT - Heading, True
42
+ <li>$GPHSC - Heading Steering Command
43
+ <li>$GPLCD - Loran-C Signal Data
44
+ <li>$GPMSK - Control for a Beacon Receiver
45
+ <li>$GPMSS - Beacon Receiver Status
46
+ <li>$GPMTA - Air Temperature (to be phased out)
47
+ <li>$GPMTW - Water Temperature
48
+ <li>$GPMWD - Wind Direction
49
+ <li>$GPMWV - Wind Speed and Angle
50
+ <li>$GPOLN - Omega Lane Numbers
51
+ <li>$GPOSD - Own Ship Data
52
+ <li>$GPR00 - Waypoint active route (not standard)
53
+ <li>$GPRMA - Recommended Minimum Specific Loran-C Data
54
+ <li>$GPRMB - Recommended Minimum Navigation Information
55
+ <li>$GPRMC - Recommended Minimum Specific GPS/TRANSIT Data
56
+ <li>$GPROT - Rate of Turn
57
+ <li>$GPRPM - Revolutions
58
+ <li>$GPRSA - Rudder Sensor Angle
59
+ <li>$GPRSD - RADAR System Data
60
+ <li>$GPRTE - Routes
61
+ <li>$GPSFI - Scanning Frequency Information
62
+ <li>$GPSTN - Multiple Data ID
63
+ <li>$GPTRF - Transit Fix Data
64
+ <li>$GPTTM - Tracked Target Message
65
+ <li>$GPVBW - Dual Ground/Water Speed
66
+ <li>$GPVDR - Set and Drift
67
+ <li>$GPVHW - Water Speed and Heading
68
+ <li>$GPVLW - Distance Traveled through the Water
69
+ <li>$GPVPW - Speed, Measured Parallel to Wind
70
+ <li>$GPVTG - Track Made Good and Ground Speed
71
+ <li>$GPWCV - Waypoint Closure Velocity
72
+ <li>$GPWNC - Distance, Waypoint to Waypoint
73
+ <li>$GPWPL - Waypoint Location
74
+ <li>$GPXDR - Transducer Measurements
75
+ <li>$GPXTE - Cross-Track Error, Measured
76
+ <li>$GPXTR - Cross-Track Error, Dead Reckoning
77
+ <li>$GPZDA - UTC Date / Time and Local Time Zone Offset
78
+ <li>$GPZFO - UTC &amp; Time from Origin Waypoint
79
+ <li>$GPZTG - UTC &amp; Time to Destination Waypoint
80
+ </ul></pre>
81
+
82
+ <a name="interp"><p>[<a href="#top">Top</a>]
83
+ <hr size=3><h2>26 interpreted sentences transmitted by GPS unit</h2>
84
+ <pre>
85
+ <a href="#gpaam">$GPAAM</a> - Waypoint Arrival Alarm
86
+ <a href="#gpalm">$GPALM</a> - GPS Almanac Data <b>(Can also be received by GPS unit)</b>
87
+ <a href="#gpapb">$GPAPB</a> - Autopilot format &quot;B&quot;
88
+ <a href="#gpbod">$GPBOD</a> - Bearing, origin to destination
89
+ <a href="#gpbwc">$GPBWC</a> - Bearing and distance to waypoint, great circle
90
+ <a href="#gpgga">$GPGGA</a> - Global Positioning System Fix Data
91
+ <a href="#gpgll">$GPGLL</a> - Geographic position, latitude / longitude
92
+ <a href="#gpgrs">$GPGRS</a> - GPS Range Residuals
93
+ <a href="#gpgsa">$GPGSA</a> - GPS DOP and active satellites
94
+ <a href="#gpgst">$GPGST</a> - GPS Pseudorange Noise Statistics
95
+ <a href="#gpgsv">$GPGSV</a> - GPS Satellites in view
96
+ <a href="#gphdt">$GPHDT</a> - Heading, True
97
+ <a href="#gpmsk">$GPMSK</a> - Control for a Beacon Receiver
98
+ <a href="#gpmss">$GPMSS</a> - Beacon Receiver Status
99
+ <a href="#gpr00">$GPR00</a> - List of waypoints in currently active route
100
+ <a href="#gprma">$GPRMA</a> - Recommended minimum specific Loran-C data
101
+ <a href="#gprmb">$GPRMB</a> - Recommended minimum navigation info
102
+ <a href="#gprmc">$GPRMC</a> - Recommended minimum specific GPS/Transit data
103
+ <a href="#gprte">$GPRTE</a> - Routes
104
+ <a href="#gptrf">$GPTRF</a> - Transit Fix Data
105
+ <a href="#gpstn">$GPSTN</a> - Multiple Data ID
106
+ <a href="#gpvbw">$GPVBW</a> - Dual Ground / Water Speed
107
+ <a href="#gpvtg">$GPVTG</a> - Track made good and ground speed
108
+ <a href="#gpwpl">$GPWPL</a> - Waypoint location
109
+ <a href="#gpxte">$GPXTE</a> - Cross-track error, Measured
110
+ <a href="#gpzda">$GPZDA</a> - UTC Date / Time and Local Time Zone Offset
111
+ </pre>
112
+
113
+ <p>There is a full list of $GPxxx sentence codes <a href="#allgp">available</a>, without links to format details.
114
+
115
+ <p>[<a href="#top">Top</a>]
116
+
117
+ <hr size=1><a name="gpaam"><h2>$GPAAM</h2>
118
+ <p>Waypoint Arrival Alarm
119
+ <p>This sentence is generated by some units to indicate the Status of arrival (entering the
120
+ arrival circle, or passing the perpendicular of the course line) at the destination waypoint.
121
+ <pre>
122
+ $GPAAM,A,A,0.10,N,WPTNME*43
123
+
124
+ Where:
125
+ AAM Arrival Alarm
126
+ A Arrival circle entered
127
+ A Perpendicular passed
128
+ 0.10 Circle radius
129
+ N Nautical miles
130
+ WPTNME Waypoint name
131
+ *43 Checksum data
132
+ </pre>
133
+
134
+ <hr size=1><a name="gpalm"><h2>$GPALM</h2>
135
+ <p>GPS Almanac Data
136
+ <p>A set of sentences transmitted by some Garmin units in response
137
+ to a received $PGRMO,GPALM,1 sentence. It can also be received by
138
+ some GPS units (eg. Garmin GPS 16 and GPS 17) to initialize the
139
+ stored almanac information in the unit.
140
+ <p>Example 1: $GPALM,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,*CC
141
+ <pre>
142
+ 1 = Total number of sentences in set
143
+ 2 = Sentence sequence number in set
144
+ 3 = Satellite number
145
+ 4 = GPS week number
146
+ 5 = Bits 17 to 24 of almanac page indicating SV health
147
+ 6 = Eccentricity
148
+ 7 = Reference time of almanac
149
+ 8 = Inclination angle
150
+ 9 = Right ascension rate
151
+ 10 = Semi major axis route
152
+ 11 = Argument of perigee (omega)
153
+ 12 = Ascension node longitude
154
+ 13 = Mean anomaly
155
+ 14 = af0 clock parameter
156
+ 15 = af1 clock parameter
157
+ </pre>
158
+ <p>Example 2: $GPALM,1,1,15,1159,00,441d,4e,16be,fd5e,a10c9f,4a2da4,686e81,58cbe1,0a4,001*5B
159
+ <p><TABLE BORDER="1">
160
+ <TR><th>Field</th><th>Example</th><th>Comments</th></TR>
161
+ <TR><TD>Sentence ID</TD><TD>$GPALM</TD><TD>&nbsp;</TD></TR>
162
+ <TR><TD>Number of messages</TD><TD>1</TD><TD>Total number of messages in sequence</TD></TR>
163
+ <TR><TD>Sequence number</TD><TD>1</TD><TD>This is first message in sequence</TD></TR>
164
+ <TR><TD>Satellite PRN</TD><TD>15</TD><TD>Unique ID (PRN) of satellite message relates to</TD></TR>
165
+ <TR><TD>GPS week number</TD><TD>1159</TD><TD>&nbsp;</TD></TR>
166
+ <TR><TD>SV health</TD><TD>00</TD><TD>Bits 17-24 of almanac page</TD></TR>
167
+ <TR><TD>Eccentricity</TD><TD>441d</TD><TD>&nbsp;</TD></TR>
168
+ <TR><TD>Reference time</TD><TD>4e</TD><TD>Almanac reference time</TD></TR>
169
+ <TR><TD>Inclination angle</TD><TD>16be</TD><TD>&nbsp;</TD></TR>
170
+ <TR><TD>Rate of right ascension</TD><TD>fd5e</TD><TD>&nbsp;</TD></TR>
171
+ <TR><TD>Roor of semi-major axis</TD><TD>a10c9f</TD><TD>&nbsp;</TD></TR>
172
+ <TR><TD>Argument of perigee</TD><TD>4a2da4</TD><TD>&nbsp;</TD></TR>
173
+ <TR><TD>Longitude of ascension node</TD><TD>686e81</TD><TD>&nbsp;</TD></TR>
174
+ <TR><TD>Mean anomoly</TD><TD>58cbe1</TD><TD>&nbsp;</TD></TR>
175
+ <TR><TD>F0 clock parameter</TD><TD>0a4</TD><TD>&nbsp;</TD></TR>
176
+ <TR><TD>F1 clock parameter</TD><TD>001</TD><TD>&nbsp;</TD></TR>
177
+ <TR><TD>Checksum</TD><TD>*5B</TD><TD>&nbsp;</TD></TR>
178
+ </TABLE><p>&nbsp;
179
+
180
+ <hr size=1><a name="gpapb"><h2>$GPAPB</h2>
181
+ <p>Autopilot format &quot;B&quot;
182
+ <p>This sentence is sent by some
183
+ GPS receivers to allow them to be used to control an autopilot unit.
184
+ This sentence is commonly used by autopilots and contains navigation
185
+ receiver warning flag status, cross-track-error, waypoint arrival
186
+ status, initial bearing from origin waypoint to the destination,
187
+ continuous bearing from present position to destination and
188
+ recommended heading-to-steer to destination waypoint for the active
189
+ navigation leg of the journey.
190
+ <p>Note: Some autopilots, Robertson in particular, misinterpret
191
+ "bearing from origin to destination" as "bearing from present position
192
+ to destination". This is likely due to the difference between the APB
193
+ sentence and the APA sentence. for the APA sentence this would be the
194
+ correct thing to do for the data in the same field. APA only differs
195
+ from APB in this one field and APA leaves off the last two fields
196
+ where this distinction is clearly spelled out. This will result in
197
+ poor performance if the boat is sufficiently off-course that the two
198
+ bearings are different.
199
+ <pre>
200
+ $GPAPB,A,A,0.10,R,N,V,V,011,M,DEST,011,M,011,M*82
201
+
202
+ where:
203
+ APB Autopilot format B
204
+ A Loran-C blink/SNR warning, general warning
205
+ A Loran-C cycle warning
206
+ 0.10 cross-track error distance
207
+ R steer Right to correct (or L for Left)
208
+ N cross-track error units - nautical miles (K for kilometers)
209
+ V arrival alarm - circle
210
+ V arrival alarm - perpendicular
211
+ 011,M magnetic bearing, origin to destination
212
+ DEST destination waypoint ID
213
+ 011,M magnetic bearing, present position to destination
214
+ 011,M magnetic heading to steer (bearings could True as 033,T)
215
+ </pre>
216
+
217
+ <hr size=1><a name="gpbod"><h2>$GPBOD</h2>
218
+ <p>Bearing Origin to Destination
219
+ <pre>
220
+ eg. BOD,045.,T,023.,M,DEST,START
221
+ 045.,T bearing 045 degrees True from "START" to "DEST"
222
+ 023.,M breaing 023 degrees Magnetic from "START" to "DEST"
223
+ DEST destination waypoint ID
224
+ START origin waypoint ID
225
+ </pre>
226
+
227
+ <p>Example 1: $GPBOD,099.3,T,105.6,M,POINTB,*01<br>
228
+ Waypoint ID: "POINTB" Bearing 99.3 True, 105.6 Magnetic <br>
229
+ This sentence is transmitted in the GOTO mode, without an active route on your GPS.
230
+ WARNING: this is the bearing from the moment you press enter in the GOTO
231
+ page to the destination waypoint and is NOT updated dynamically!
232
+ To update the information, (current bearing to waypoint), you will have to press enter in the GOTO page again.
233
+ <p>Example 2: $GPBOD,097.0,T,103.2,M,POINTB,POINTA*52<br>
234
+ This sentence is transmitted when a route is active. It contains the active leg information: origin waypoint "POINTA" and destination waypoint "POINTB", bearing between the two points 97.0 True, 103.2 Magnetic. It does NOT display the bearing from current location to destination waypoint!
235
+ WARNING Again this information does not change until you are on the next leg of the route. (The bearing from POINTA to POINTB does not change during the time you are on this leg.)
236
+
237
+ <hr size=1><a name="gpbwc"><h2>$GPBWC</h2>
238
+ <p>Bearing and distance to waypoint, great circle
239
+ <pre>
240
+ eg1. $GPBWC,081837,,,,,,T,,M,,N,*13
241
+
242
+ BWC,225444,4917.24,N,12309.57,W,051.9,T,031.6,M,001.3,N,004*29
243
+ 225444 UTC time of fix 22:54:44
244
+ 4917.24,N Latitude of waypoint
245
+ 12309.57,W Longitude of waypoint
246
+ 051.9,T Bearing to waypoint, degrees true
247
+ 031.6,M Bearing to waypoint, degrees magnetic
248
+ 001.3,N Distance to waypoint, Nautical miles
249
+ 004 Waypoint ID
250
+ <br>
251
+ eg2. $GPBWC,220516,5130.02,N,00046.34,W,213.8,T,218.0,M,0004.6,N,EGLM*11
252
+ 1 2 3 4 5 6 7 8 9 10 11 12 13
253
+ <br>
254
+ 1 220516 timestamp
255
+ 2 5130.02 Latitude of next waypoint
256
+ 3 N North/South
257
+ 4 00046.34 Longitude of next waypoint
258
+ 5 W East/West
259
+ 6 213.0 True track to waypoint
260
+ 7 T True Track
261
+ 8 218.0 Magnetic track to waypoint
262
+ 9 M Magnetic
263
+ 10 0004.6 range to waypoint
264
+ 11 N unit of range to waypoint, N = Nautical miles
265
+ 12 EGLM Waypoint name
266
+ 13 *11 checksum
267
+ </pre>
268
+
269
+ <hr size=1><a name="gpgga"><h2>$GPGGA</h2>
270
+ <p>Global Positioning System Fix Data
271
+ <p>eg1. $GPGGA,170834,4124.8963,N,08151.6838,W,1,05,1.5,280.2,M,-34.0,M,,,*75
272
+ <p><table BORDER="1">
273
+ <tr ALIGN="left">
274
+ <th>Name </th>
275
+ <th>Example Data </th>
276
+ <th>Description </th>
277
+ </tr>
278
+ <tr>
279
+ <td>Sentence Identifier</td>
280
+ <td>$GPGGA</td>
281
+ <td>Global Positioning System Fix Data</td>
282
+ </tr>
283
+ <tr>
284
+ <td>Time</td>
285
+ <td>170834</td>
286
+ <td>17:08:34 UTC</td>
287
+ </tr>
288
+ <tr>
289
+ <td>Latitude</td>
290
+ <td>4124.8963, N</td>
291
+ <td>41d 24.8963' N or 41d 24' 54&quot; N</td>
292
+ </tr>
293
+ <tr>
294
+ <td>Longitude</td>
295
+ <td>08151.6838, W</td>
296
+ <td>81d 51.6838' W or 81d 51' 41&quot; W</td>
297
+ </tr>
298
+ <tr>
299
+ <td>Fix Quality:<br>
300
+ - 0 = Invalid<br>
301
+ - 1 = GPS fix<br>
302
+ - 2 = DGPS fix</td>
303
+ <td>1</td>
304
+ <td>Data is from a GPS fix</td>
305
+ </tr>
306
+ <tr>
307
+ <td>Number of Satellites</td>
308
+ <td>05</td>
309
+ <td>5 Satellites are in view</td>
310
+ </tr>
311
+ <tr>
312
+ <td>Horizontal Dilution of Precision (HDOP)</td>
313
+ <td>1.5</td>
314
+ <td>Relative accuracy of horizontal position</td>
315
+ </tr>
316
+ <tr>
317
+ <td>Altitude</td>
318
+ <td>280.2, M</td>
319
+ <td>280.2 meters above mean sea level</td>
320
+ </tr>
321
+ <tr>
322
+ <td>Height of geoid above WGS84 ellipsoid</td>
323
+ <td>-34.0, M</td>
324
+ <td>-34.0 meters</td>
325
+ </tr>
326
+ <tr>
327
+ <td>Time since last DGPS update</td>
328
+ <td>blank</td>
329
+ <td>No last update</td>
330
+ </tr>
331
+ <tr>
332
+ <td>DGPS reference station id</td>
333
+ <td>blank</td>
334
+ <td>No station id</td>
335
+ </tr>
336
+ <tr>
337
+ <td>Checksum</td>
338
+ <td>*75</td>
339
+ <td>Used by program to check for transmission errors</td>
340
+ </tr>
341
+ </table>
342
+ <p>Courtesy of Brian McClure, N8PQI.
343
+
344
+ <p>Global Positioning System Fix Data.
345
+ Time, position and fix related data for a GPS receiver.
346
+ <p>eg2. $GPGGA,hhmmss.ss,ddmm.mmm,a,dddmm.mmm,b,q,xx,p.p,a.b,M,c.d,M,x.x,nnnn
347
+ <p>hhmmss.ss = UTC of position <br>
348
+ ddmm.mmm = latitude of position<br>
349
+ a = N or S, latitutde hemisphere<br>
350
+ dddmm.mmm = longitude of position<br>
351
+ b = E or W, longitude hemisphere <br>
352
+ q = GPS Quality indicator (0=No fix, 1=Non-differential GPS fix, 2=Differential GPS fix, 6=Estimated fix) <br>
353
+ xx = number of satellites in use <br>
354
+ p.p = horizontal dilution of precision <br>
355
+ a.b = Antenna altitude above mean-sea-level<br>
356
+ M = units of antenna altitude, meters <br>
357
+ c.d = Geoidal height<br>
358
+ M = units of geoidal height, meters <br>
359
+ x.x = Age of Differential GPS data (seconds since last valid RTCM transmission) <br>
360
+ nnnn = Differential reference station ID, 0000 to 1023 <br>
361
+
362
+ <hr size=1><a name="gpgll"><h2>$GPGLL</h2>
363
+ <p>Geographic Position, Latitude / Longitude and time.
364
+ <pre>
365
+ eg1. $GPGLL,3751.65,S,14507.36,E*77
366
+ eg2. $GPGLL,4916.45,N,12311.12,W,225444,A
367
+ <br>
368
+ 4916.46,N Latitude 49 deg. 16.45 min. North
369
+ 12311.12,W Longitude 123 deg. 11.12 min. West
370
+ 225444 Fix taken at 22:54:44 UTC
371
+ A Data valid
372
+ <br>
373
+ eg3. $GPGLL,5133.81,N,00042.25,W*75
374
+ 1 2 3 4 5
375
+
376
+ 1 5133.81 Current latitude
377
+ 2 N North/South
378
+ 3 00042.25 Current longitude
379
+ 4 W East/West
380
+ 5 *75 checksum
381
+ </pre>
382
+
383
+ <p>$--GLL,lll.ll,a,yyyyy.yy,a,hhmmss.ss,A llll.ll = Latitude of position
384
+ <p>a = N or S <br>
385
+ yyyyy.yy = Longitude of position <br>
386
+ a = E or W <br>
387
+ hhmmss.ss = UTC of position <br>
388
+ A = status: A = valid data <br>
389
+
390
+ <hr size=1><a name="gpgrs"><h2>$GPGRS</h2>
391
+ <p>GPS Range Residuals
392
+ <p>Example: $GPGRS,024603.00,1,-1.8,-2.7,0.3,,,,,,,,,*6C
393
+ <p><TABLE BORDER="1">
394
+ <TR><th>Field</th><th>Example</th><th>Comments</th></TR>
395
+ <TR><TD>Sentence ID</TD><TD>$GPGRS</TD><TD>&nbsp;</TD></TR>
396
+ <TR><TD>UTC Time</TD><TD>024603.00</TD><TD>UTC time of associated GGA fix</TD></TR>
397
+ <TR><TD>Mode</TD><TD>1</TD><TD>0 = Residuals used in GGA, 1 = residuals calculated after GGA</TD></TR>
398
+ <TR><TD>Sat 1 residual</TD><TD>-1.8</TD><TD>Residual (meters) of satellite 1 in solution</TD></TR>
399
+ <TR><TD>Sat 2 residual</TD><TD>-2.7</TD><TD>The order matches the PRN numbers in the GSA sentence</TD></TR>
400
+ <TR><TD>Sat 3 residual</TD><TD>0.3</TD><TD>&nbsp;</TD></TR>
401
+ <TR><TD>Sat 4 residual</TD><TD>&nbsp;</TD><TD>Unused entries are blank</TD></TR>
402
+ <TR><TD>Sat 5 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
403
+ <TR><TD>Sat 6 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
404
+ <TR><TD>Sat 7 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
405
+ <TR><TD>Sat 8 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
406
+ <TR><TD>Sat 9 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
407
+ <TR><TD>Sat 10 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
408
+ <TR><TD>Sat 11 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
409
+ <TR><TD>Sat 12 residual</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
410
+ <TR><TD>Checksum</TD><TD>*6C</TD><TD>&nbsp;</TD></TR>
411
+ </TABLE><p>&nbsp;
412
+
413
+ <hr size=1><a name="gpgsa"><h2>$GPGSA</h2>
414
+ <p>GPS DOP and active satellites
415
+ <pre>
416
+ eg1. $GPGSA,A,3,,,,,,16,18,,22,24,,,3.6,2.1,2.2*3C
417
+ eg2. $GPGSA,A,3,19,28,14,18,27,22,31,39,,,,,1.7,1.0,1.3*34
418
+ <br>
419
+ 1 = Mode:
420
+ M=Manual, forced to operate in 2D or 3D
421
+ A=Automatic, 3D/2D
422
+ 2 = Mode:
423
+ 1=Fix not available
424
+ 2=2D
425
+ 3=3D
426
+ 3-14 = PRN's of Satellite Vechicles (SV's) used in position fix (null for unused fields)
427
+ 15 = Position Dilution of Precision (PDOP)
428
+ 16 = Horizontal Dilution of Precision (HDOP)
429
+ 17 = Vertical Dilution of Precision (VDOP)
430
+ </pre>
431
+
432
+ <hr size=1><a name="gpgst"><h2>$GPGST</h2>
433
+ <p>GPS Pseudorange Noise Statistics
434
+ <p>Example: $GPGST,024603.00,3.2,6.6,4.7,47.3,5.8,5.6,22.0*58
435
+ <p><TABLE BORDER="1">
436
+ <TR><th>Field</th><th>Example</th><th>Comments</th></TR>
437
+ <TR><TD>Sentence ID</TD><TD>$GPGST</TD><TD>&nbsp;</TD></TR>
438
+ <TR><TD>UTC Time</TD><TD>024603.00</TD><TD>UTC time of associated GGA fix</TD></TR>
439
+ <TR><TD>RMS deviation</TD><TD>3.2</TD><TD>Total RMS standard deviation of ranges inputs to the navigation solution</TD></TR>
440
+ <TR><TD>Semi-major deviation</TD><TD>6.6</TD><TD>Standard deviation (meters) of semi-major axis of error ellipse</TD></TR>
441
+ <TR><TD>Semi-minor deviation</TD><TD>4.7</TD><TD>Standard deviation (meters) of semi-minor axis of error ellipse</TD></TR>
442
+ <TR><TD>Semi-major orientation</TD><TD>47.3</TD><TD>Orientation of semi-major axis of error ellipse (true north degrees)</TD></TR>
443
+ <TR><TD>Latitude error deviation</TD><TD>5.8</TD><TD>Standard deviation (meters) of latitude error</TD></TR>
444
+ <TR><TD>Longitude error deviation</TD><TD>5.6</TD><TD>Standard deviation (meters) of longitude error</TD></TR>
445
+ <TR><TD>Altitude error deviation</TD><TD>22.0</TD><TD>Standard deviation (meters) of latitude error</TD></TR>
446
+ <TR><TD>Checksum</TD><TD>*58</TD><TD>&nbsp;</TD></TR>
447
+ </TABLE><p>&nbsp;
448
+
449
+ <hr size=1><a name="gpgsv"><h2>$GPGSV</h2>
450
+ <p>GPS Satellites in view
451
+ <pre>
452
+ eg. $GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74
453
+ $GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*74
454
+ $GPGSV,3,3,11,22,42,067,42,24,14,311,43,27,05,244,00,,,,*4D
455
+ <br>
456
+ $GPGSV,1,1,13,02,02,213,,03,-3,000,,11,00,121,,14,13,172,05*62
457
+ <br>
458
+ 1 = Total number of messages of this type in this cycle
459
+ 2 = Message number
460
+ 3 = Total number of SVs in view
461
+ 4 = SV PRN number
462
+ 5 = Elevation in degrees, 90 maximum
463
+ 6 = Azimuth, degrees from true north, 000 to 359
464
+ 7 = SNR, 00-99 dB (null when not tracking)
465
+ 8-11 = Information about second SV, same as field 4-7
466
+ 12-15= Information about third SV, same as field 4-7
467
+ 16-19= Information about fourth SV, same as field 4-7
468
+ </pre>
469
+
470
+ <hr size=1><a name="gphdt"><h2>$GPHDT</h2>
471
+ <p>Heading, True.
472
+ <p>Actual vessel heading in degrees Ture produced by any device or system producing true heading.
473
+ <p>$--HDT,x.x,T<br>
474
+ x.x = Heading, degrees True
475
+
476
+ <hr size=1><a name="gpmsk"><h2>$GPMSK</h2>
477
+ <p>Control for a Beacon Receiver
478
+ <pre>
479
+ $GPMSK,318.0,A,100,M,2*45
480
+
481
+ where:
482
+ 318.0 Frequency to use
483
+ A Frequency mode, A=auto, M=manual
484
+ 100 Beacon bit rate
485
+ M Bitrate, A=auto, M=manual
486
+ 2 frequency for MSS message status (null for no status)
487
+ *45 checksum
488
+ </pre>
489
+
490
+ <hr size=1><a name="gpmss"><h2>$GPMSS</h2>
491
+ <p>Beacon Receiver Status
492
+ <p>Example 1: $GPMSS,55,27,318.0,100,*66
493
+ <pre>
494
+ where:
495
+ 55 signal strength in dB
496
+ 27 signal to noise ratio in dB
497
+ 318.0 Beacon Frequency in KHz
498
+ 100 Beacon bitrate in bps
499
+ *66 checksum
500
+ </pre>
501
+ <p>Example 2: $GPMSS,0.0,0.0,0.0,25,2*6D
502
+ <p><TABLE BORDER="1">
503
+ <TR><th>Field</th><th>Example</th><th>Comments</th></TR>
504
+ <TR><TD>Sentence ID</TD><TD>$GPMSS</TD><TD>&nbsp</TD></TR>
505
+ <TR><TD>Signal strength</TD><TD>0.0</TD><TD>Signal strength (dB 1uV)</TD></TR>
506
+ <TR><TD>SNR</TD><TD>0.0</TD><TD>Signal to noise ratio (dB)</TD></TR>
507
+ <TR><TD>Frequency</TD><TD>0.0</TD><TD>Beacon frequency (kHz)</TD></TR>
508
+ <TR><TD>Data rate</TD><TD>25</TD><TD>Beacon data rate (BPS)</TD></TR>
509
+ <TR><TD>Unknown field</TD><TD>2</TD><TD>Unknown field sent by GPS receiver used for test</TD></TR>
510
+ <TR><TD>Checksum</TD><TD>*6D</TD><TD>&nbsp</TD></TR>
511
+ </TABLE><p>&nbsp;
512
+
513
+ <hr size=1><a name="gpr00"><h2>$GPR00</h2>
514
+ <p>List of waypoint IDs in currently active route
515
+ <pre>
516
+ eg1. $GPR00,EGLL,EGLM,EGTB,EGUB,EGTK,MBOT,EGTB,,,,,,,*58
517
+ eg2. $GPR00,MINST,CHATN,CHAT1,CHATW,CHATM,CHATE,003,004,005,006,007,,,*05
518
+ <br>
519
+ List of waypoints. This alternates with $GPWPL cycle
520
+ which itself cycles waypoints.
521
+ </pre>
522
+
523
+ <hr size=1><a name="gprma"><h2>$GPRMA</h2>
524
+ <p>Recommended minimum specific Loran-C data
525
+ <pre>
526
+ eg. $GPRMA,A,lll,N,lll,W,x,y,ss.s,ccc,vv.v,W*hh
527
+ A = Data status
528
+ lll = Latitude
529
+ N = N/S
530
+ lll = longitude
531
+ S = W/E
532
+ x = not used
533
+ y = not used
534
+ ss.s = Speed over ground in knots
535
+ ccc = Course over ground
536
+ vv.v = Variation
537
+ W = Direction of variation E/W
538
+ hh = Checksum
539
+ </pre>
540
+
541
+ <hr size=1><a name="gprmb"><h2>$GPRMB</h2>
542
+ <p>Recommended minimum navigation information (sent by nav.
543
+ receiver when a destination waypoint is active)
544
+ <pre>
545
+ eg1. $GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*0B
546
+ <br>
547
+ A Data status A = OK, V = warning
548
+ 0.66,L Cross-track error (nautical miles, 9.9 max.),
549
+ steer Left to correct (or R = right)
550
+ 003 Origin waypoint ID
551
+ 004 Destination waypoint ID
552
+ 4917.24,N Destination waypoint latitude 49 deg. 17.24 min. N
553
+ 12309.57,W Destination waypoint longitude 123 deg. 09.57 min. W
554
+ 001.3 Range to destination, nautical miles
555
+ 052.5 True bearing to destination
556
+ 000.5 Velocity towards destination, knots
557
+ V Arrival alarm A = arrived, V = not arrived
558
+ *0B mandatory checksum
559
+ <br>
560
+ eg2. $GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D
561
+ 1 2 3 4 5 6 7 8 9 10 11 12 13
562
+ <br>
563
+ 1 A validity
564
+ 2 4.08 off track
565
+ 3 L Steer Left (L/R)
566
+ 4 EGLL last waypoint
567
+ 5 EGLM next waypoint
568
+ 6 5130.02 Latitude of Next waypoint
569
+ 7 N North/South
570
+ 8 00046.34 Longitude of next waypoint
571
+ 9 W East/West
572
+ 10 004.6 Range
573
+ 11 213.9 bearing to waypt.
574
+ 12 122.9 closing velocity
575
+ 13 A validity
576
+ 14 *3D checksum
577
+ <br>
578
+ eg3. $GPRMB,A,x.x,a,c--c,d--d,llll.ll,e,yyyyy.yy,f,g.g,h.h,i.i,j*kk
579
+ 1 = Data Status (V=navigation receiver warning)
580
+ 2 = Crosstrack error in nautical miles
581
+ 3 = Direction to steer (L or R) to correct error
582
+ 4 = Origin waypoint ID#
583
+ 5 = Destination waypoint ID#
584
+ 6 = Destination waypoint latitude
585
+ 7 = N or S
586
+ 8 = Destination waypoint longitude
587
+ 9 = E or W
588
+ 10 = Range to destination in nautical miles
589
+ 11 = Bearing to destination, degrees True
590
+ 12 = Destination closing velocity in knots
591
+ 13 = Arrival status; (A=entered or perpendicular passed)
592
+ 14 = Checksum
593
+ </pre>
594
+
595
+ <hr size=1><a name="gprmc"><h2>$GPRMC</h2>
596
+ <p>Recommended minimum specific GPS/Transit data
597
+ <pre>
598
+ eg1. $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62
599
+ eg2. $GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68
600
+ <br>
601
+ 225446 Time of fix 22:54:46 UTC
602
+ A Navigation receiver warning A = Valid position, V = Warning
603
+ 4916.45,N Latitude 49 deg. 16.45 min. North
604
+ 12311.12,W Longitude 123 deg. 11.12 min. West
605
+ 000.5 Speed over ground, Knots
606
+ 054.7 Course Made Good, degrees true
607
+ 191194 UTC Date of fix, 19 November 1994
608
+ 020.3,E Magnetic variation, 20.3 deg. East
609
+ *68 mandatory checksum
610
+ <br>
611
+ eg3. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70
612
+ 1 2 3 4 5 6 7 8 9 10 11 12
613
+ <br>
614
+ 1 220516 Time Stamp
615
+ 2 A validity - A-ok, V-invalid
616
+ 3 5133.82 current Latitude
617
+ 4 N North/South
618
+ 5 00042.24 current Longitude
619
+ 6 W East/West
620
+ 7 173.8 Speed in knots
621
+ 8 231.8 True course
622
+ 9 130694 Date Stamp
623
+ 10 004.2 Variation
624
+ 11 W East/West
625
+ 12 *70 checksum
626
+ <br>
627
+ eg4. for NMEA 0183 version 3.00 active the Mode indicator field is added
628
+ $GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a,m*hh
629
+ Field #
630
+ 1 = UTC time of fix
631
+ 2 = Data status (A=Valid position, V=navigation receiver warning)
632
+ 3 = Latitude of fix
633
+ 4 = N or S of longitude
634
+ 5 = Longitude of fix
635
+ 6 = E or W of longitude
636
+ 7 = Speed over ground in knots
637
+ 8 = Track made good in degrees True
638
+ 9 = UTC date of fix
639
+ 10 = Magnetic variation degrees (Easterly var. subtracts from true course)
640
+ 11 = E or W of magnetic variation
641
+ 12 = Mode indicator, (A=Autonomous, D=Differential, E=Estimated, N=Data not valid)
642
+ 13 = Checksum
643
+ </pre>
644
+
645
+ <hr size=1><a name="gprte"><h2>$GPRTE</h2>
646
+ <p>Routes
647
+ <pre>
648
+ eg. $GPRTE,2,1,c,0,PBRCPK,PBRTO,PTELGR,PPLAND,PYAMBU,PPFAIR,PWARRN,PMORTL,PLISMR*73
649
+ $GPRTE,2,2,c,0,PCRESY,GRYRIE,GCORIO,GWERR,GWESTG,7FED*34
650
+ 1 2 3 4 5 ..
651
+ </pre>
652
+ <ol>
653
+ <li>Number of sentences in sequence
654
+ <li>Sentence number
655
+ <li>'c' = Current active route, 'w' = waypoint list starts with destination waypoint
656
+ <li>Name or number of the active route
657
+ <li>onwards, Names of waypoints in Route
658
+ </ol>
659
+ <hr size=1><a name="gptrf"><h2>$GPTRF</h2>
660
+ <p>Transit Fix Data
661
+ <p>Time, date, position, and information related to a TRANSIT Fix.
662
+ <p>$--TRF,hhmmss.ss,xxxxxx,llll.ll,a,yyyyy.yy,a,x.x,x.x,x.x,x.x,xxx<br>
663
+ hhmmss.ss = UTC of position fix <br>
664
+ xxxxxx = Date: dd/mm/yy <br>
665
+ llll.ll,a = Latitude of position fix, N/S <br>
666
+ yyyyy.yy,a = Longitude of position fix, E/W <br>
667
+ x.x = Elevation angle <br>
668
+ x.x = Number of iterations<br>
669
+ x.x = Number of Doppler intervals <br>
670
+ x.x = Update distance, nautical miles <br>
671
+ x.x = Satellite ID
672
+
673
+ <hr size=1><a name="gpstn"><h2>$GPSTN</h2>
674
+ <p>Multiple Data ID.
675
+ <p>This sentence is transmitted before each individual sentence where there is a need for
676
+ the Listener to determine the exact source of data in the system. Examples might
677
+ include dual-frequency depthsounding equipment or equipment that integrates data
678
+ from a number of sources and produces a single output.
679
+ <p>$--STN,xx<br>
680
+ xx = Talker ID number, 00 to 99
681
+
682
+ <hr size=1><a name="gpvbw"><h2>$GPVBW</h2>
683
+ <p>Dual Ground / Water Speed
684
+ <p>Water referenced and ground referenced speed data.
685
+ <p>$--VBW,x.x,x.x,A,x.x,x.x,A<br>
686
+ x.x = Longitudinal water speed, knots <br>
687
+ x.x = Transverse water speed, knots <br>
688
+ A = Status: Water speed, A = Data valid <br>
689
+ x.x = Longitudinal ground speed, knots <br>
690
+ x.x = Transverse ground speed, knots <br>
691
+ A = Status: Ground speed, A = Data valid
692
+
693
+ <hr size=1><a name="gpvtg"><h2>$GPVTG</h2>
694
+ <p>Track Made Good and Ground Speed.
695
+ <pre>
696
+ eg1. $GPVTG,360.0,T,348.7,M,000.0,N,000.0,K*43
697
+ eg2. $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*41
698
+ <br>
699
+ 054.7,T True course made good over ground, degrees
700
+ 034.4,M Magnetic course made good over ground, degrees
701
+ 005.5,N Ground speed, N=Knots
702
+ 010.2,K Ground speed, K=Kilometers per hour
703
+ <br>
704
+ eg3. for NMEA 0183 version 3.00 active the Mode indicator field
705
+ is added at the end
706
+ $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K,A*53
707
+ A Mode indicator (A=Autonomous, D=Differential,
708
+ E=Estimated, N=Data not valid)
709
+ </pre>
710
+ <hr size=1><a name="gpwpl"><h2>$GPWPL</h2>
711
+ <p>Waypoint location
712
+ <pre>
713
+ eg1. $GPWPL,4917.16,N,12310.64,W,003*65
714
+ <br>
715
+ 4917.16,N Latitude of waypoint
716
+ 12310.64,W Longitude of waypoint
717
+ 003 Waypoint ID
718
+ <br>
719
+ When a route is active, this sentence is sent once for each
720
+ waypoint in the route, in sequence. When all waypoints have
721
+ been reported, GPR00 is sent in the next data set. In any
722
+ group of sentences, only one WPL sentence, or an R00
723
+ sentence, will be sent.
724
+ <br>
725
+ eg2. $GPWPL,5128.62,N,00027.58,W,EGLL*59
726
+ 1 2 3 4 5 6
727
+ <br>
728
+ 1 5128.62 Latitude of nth waypoint on list
729
+ 2 N North/South
730
+ 3 00027.58 Longitude of nth waypoint
731
+ 4 W East/West
732
+ 5 EGLL Ident of nth waypoint
733
+ 6 *59 checksum
734
+ </pre>
735
+
736
+ <hr size=1><a name="gpxte"><h2>$GPXTE</h2>
737
+ <p>Cross Track Error, Measured
738
+ <pre>
739
+ eg1. $GPXTE,A,A,0.67,L,N
740
+ <br>
741
+ A General warning flag V = warning
742
+ (Loran-C Blink or SNR warning)
743
+ A Not used for GPS (Loran-C cycle lock flag)
744
+ 0.67 cross track error distance
745
+ L Steer left to correct error (or R for right)
746
+ N Distance units - Nautical miles
747
+ <br>
748
+ eg2. $GPXTE,A,A,4.07,L,N*6D
749
+ 1 2 3 4 5 6
750
+ <br>
751
+ 1 A validity
752
+ 2 A cycle lock
753
+ 3 4.07 distance off track
754
+ 4 L steer left (L/R)
755
+ 5 N distance units
756
+ 6 *6D checksum
757
+ </pre>
758
+
759
+ <hr size=1><a name="gpzda"><h2>$GPZDA</h2>
760
+ <p>UTC Date / Time and Local Time Zone Offset
761
+ <p>Example 1: $GPZDA,hhmmss.ss,xx,xx,xxxx,xx,xx
762
+ <pre>hhmmss.ss = UTC
763
+ xx = Day, 01 to 31
764
+ xx = Month, 01 to 12
765
+ xxxx = Year
766
+ xx = Local zone description, 00 to +/- 13 hours
767
+ xx = Local zone minutes description (same sign as hours)
768
+ </pre>
769
+ <p>Example 2: $GPZDA,024611.08,25,03,2002,00,00*6A
770
+ <p><TABLE BORDER="1">
771
+ <TR><th>Field</th><th>Example</th><th>Comments</th></TR>
772
+ <TR><TD>Sentence ID</TD><TD>$GPZDA</TD><TD>&nbsp</TD></TR>
773
+ <TR><TD>UTC Time</TD><TD>024611.08</TD><TD>UTC time</TD></TR>
774
+ <TR><TD>UTC Day</TD><TD>25</TD><TD>UTC day (01 to 31)</TD></TR>
775
+ <TR><TD>UTC Month</TD><TD>03</TD><TD>UTC month (01 to 12)</TD></TR>
776
+ <TR><TD>UTC Year</TD><TD>2002</TD><TD>UTC year (4 digit format)</TD></TR>
777
+ <TR><TD>Local zone hours</TD><TD>00</TD><TD>Offset to local time zone in hours (+/- 00 to +/- 59)</TD></TR>
778
+ <TR><TD>Local zone minutes</TD><TD>00</TD><TD>Offset to local time zone in minutes (00 to 59)</TD></TR>
779
+ <TR><TD>Checksum</TD><TD>*6A</TD><TD>&nbsp</TD></TR>
780
+ </TABLE>
781
+
782
+ <a name="garmin"><p>[ <a href="#top">Top</a> ]
783
+ <hr size=3><h2>12 interpreted Garmin proprietary sentences transmitted by GPS unit</h2>
784
+ <pre>
785
+ <a href="#hchdg">$HCHDG</a> - Compass Heading
786
+ <a href="#pgrmb">$PGRMB</a> - DGPS Beacon Information
787
+ <a href="#pgrmc">$PGRMC</a> - Sensor Configuration Information
788
+ <a href="#pgrmc1">$PGRMC1</a> - Additional Sensor Configuration Information
789
+ <a href="#pgrme">$PGRME</a> - Estimated Position Error
790
+ <a href="#pgrmf">$PGRMF</a> - GPS Position Fix Data
791
+ <a href="#pgrmi">$PGRMI</a> - Sensor Initialization Information
792
+ <a href="#pgrmm">$PGRMM</a> - Map Datum
793
+ <a href="#pgrmt">$PGRMT</a> - Sensor Status Information
794
+ <a href="#pgrmv">$PGRMV</a> - 3D Velocity Information
795
+ <a href="#pgrmz">$PGRMZ</a> - Altitude Information
796
+ <a href="#pslib">$PSLIB</a> - Tune DPGS Beacon Receiver
797
+ </pre>
798
+
799
+ <p>[<a href="#top">Top</a>]
800
+
801
+ <hr size=1><a name="hchdg"><h2>$HCHDG</h2>
802
+ <p>Compass Heading
803
+ <p>This sentence is used on Garmin eTrex summit, Vista and GPS76S receivers
804
+ to output the value of the internal flux-gate compass. Only the magnetic heading and magnetic
805
+ variation is shown in the message.
806
+
807
+ <pre>
808
+ $HCHDG,101.1,,,7.1,W*3C
809
+
810
+ where:
811
+ HCHDG Magnetic heading, deviation, variation
812
+ 101.1 heading
813
+ ,, deviation (no data)
814
+ 7.1,W variation
815
+ </pre>
816
+
817
+ <hr size=1><a name="pgrmb"><h2>$PGRMB</h2>
818
+ <p>DGPS Beacon Information
819
+ <p>$PGRMB,1,2,3,4,5,6,7,8,9*HH<br>
820
+ 1 = Tune frequency, Kilohertz (283.5 - 325.0 in 0.5 steps)<br>
821
+ 2 = Bit rate, Bits / second (0, 25, 50, 100, 200)<br>
822
+ 3 = SNR (Signal to Noise Ratio), 0 - 31<br>
823
+ 4 = Data Quality, 0 - 100<br>
824
+ 5 = Distance to beacon reference station<br>
825
+ 6 = Distance unit (K=Kilometres)<br>
826
+ 7 = Receiver communication status (0=Check wiring, 1=No signal, 2=Tuning, 3=Receiving, 4=Scanning)<br>
827
+ 8 = Fix source (R=RTCM, W=WAAS, N=Non-DPGS fix)<br>
828
+ 9 = DGPS Mode (A=Automatic, W=WAAS only, R=RTCM Only, N=None; DGPS disabled)<br>
829
+ HH = Checksum
830
+
831
+ <hr size=1><a name="pgrme"><h2>$PGRME</h2>
832
+ <p>Estimated Position Error
833
+ <pre>
834
+ eg. $PGRME,15.0,M,45.0,M,25.0,M*22
835
+ <br>
836
+ 15.0,M Estimated horizontal position error (HPE), M=metres
837
+ 45.0,M Estimated vertical position error (VPE), M=metres
838
+ 25.0,M Overall spherical equivalent position error, M=metres
839
+ </pre>
840
+
841
+ <hr size=1><a name="pgrmf"><h2>$PGRMF</h2>
842
+ <p>GPS Position Fix Data
843
+ <p>$PGRMF,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15*HH<br>
844
+ 1 = GPS week number<br>
845
+ 2 = GPS seconds in current week<br>
846
+ 3 = UTC date, ddmmyy format<br>
847
+ 4 = UTC time, hhmmss format<br>
848
+ 5 = GPS leap second count<br>
849
+ 6 = Latitude, dddmm.mmmm format<br>
850
+ 7 = Latitude hemisphere, N or S<br>
851
+ 8 = Longitude, dddmm.mmmm format<br>
852
+ 9 = Longitude hemisphere, E or W<br>
853
+ 10 = Mode (M=Manual, A=Automatic)<br>
854
+ 11 = Fix type (0=No fix, 1=2D fix, 2=3D fix)<br>
855
+ 12 = Speed over ground, kilometres / hour<br>
856
+ 13 = Course over ground, degrees true<br>
857
+ 14 = PDOP (Position dilution of precision), rounded to nearest integer<br>
858
+ 15 = TDOP (Time dilution of precision), rounded to nearest integer<br>
859
+ HH = Checksum
860
+
861
+ <hr size=1><a name="pgrmm"><h2>$PGRMM</h2>
862
+ <p>Map datum
863
+ <p>Example 1: $PGRMM,Astrln Geod '66*51
864
+ <p>'Astrln Geod 66' = Name of currently active datum
865
+ <p>Example 2: $PGRMM,NAD27 Canada*2F
866
+ <p>'NAD27 Canada' = Name of currently active datum
867
+ </pre>
868
+
869
+ <hr size=1><a name="pgrmt"><h2>$PGRMT</h2>
870
+ <p>Sensor Status Information
871
+ <p>$PGRMT,1,2,3,4,5,6,7,8,9*HH<br>
872
+ 1 = Garmin product model and software version (eg. GPS 16 VER 2.10)<br>
873
+ 2 = ROM checksum test (P=Pass, F=Fail)<br>
874
+ 3 = Receiver failure discrete (P=Pass, F=Fail)<br>
875
+ 4 = Stored data lost (R=Retained, L=Lost)<br>
876
+ 5 = Real time clock lost (R=Retained, L=Lost)<br>
877
+ 6 = Oscillator drift discrete (P=Pass, F=Excessive drift detected)<br>
878
+ 7 = Data collection discrtete (C=Collecting, Null=Not Collecting)<br>
879
+ 8 = GPS sensor temperature (Degrees C)<br>
880
+ 9 = GPS sensor configuration data (R=Retained, L=Lost)<br>
881
+ HH = Checksum
882
+ <p>
883
+
884
+ <hr size=1><a name="pgrmv"><h2>$PGRMV</h2>
885
+ <p>3D Velocity Information
886
+ <p>$PGRMV,1,2,3*HH<br>
887
+ 1 = True east velocity, metres / sec<br>
888
+ 2 = True north velocity, metres / sec<br>
889
+ 3 = Upward velocity, metres / sec<br>
890
+ HH = Checksum
891
+ <p>
892
+
893
+ <hr size=1><a name="pgrmz"><h2>$PGRMZ</h2>
894
+ <p>Altitude Information
895
+ <pre>
896
+ eg1. $PGRMZ,246,f,3*1B
897
+ eg2. $PGRMZ,93,f,3*21
898
+ <br>
899
+ 93,f Altitude in feet
900
+ 3 Position fix dimensions 2 = user altitude
901
+ 3 = GPS altitude
902
+ This sentence shows in feet, regardless of units shown on the display.
903
+ <br>
904
+ eg3. $PGRMZ,201,f,3*18
905
+ 1 2 3
906
+ <br>
907
+ 1 201 Altitude
908
+ 2 F Units - f-Feet
909
+ 3 checksum
910
+ </pre>
911
+
912
+ <hr size=1><a name="pslib"><h2>$PSLIB</h2>
913
+ <p>Tune DPGS Beacon Receiver
914
+ <p>Proprietary Differential Control sentences to control a Starlink differential beacon
915
+ receiver, assuming Garmin's DBR is made by Starlink.
916
+ <pre>
917
+ eg1. $PSLIB,290.5,100,J*22
918
+ eg2. $PSLIB,300.0,200,K*23
919
+ </pre>
920
+ <p>These two sentences are normally sent together in each group
921
+ of sentences from the GPS.
922
+ <p>The three fields are: Frequency, bit Rate, Request Type.
923
+ The value in the third field may be:
924
+ J = status request,
925
+ K = configuration request,
926
+ blank = tuning message.
927
+ <p>When the GPS receiver is set to change the DBR frequency or
928
+ baud rate, the "J" sentence is replaced (just once) by (for
929
+ example): $PSLIB,320.0,200*59 to set the DBR to 320 KHz, 200
930
+ baud.
931
+ <p>To tune a Garmin GBR 21, GBR 23 or equivalent beacon receiver.
932
+ <p>$PSLIB,1,2*HH<br>
933
+ 1 = Beacon tune frequency, Kilohertz (283.5 - 325.0 in 0.5 steps)<br>
934
+ 2 = Beacon bit rate, Bits / second (0, 25, 50, 100, 200<br>
935
+ HH = Checksum
936
+
937
+ <a name="garminreceived"><p>[ <a href="#top">Top</a> ]
938
+ <hr size=3><h2>8 interpreted Garmin proprietary sentences received by GPS unit</h2>
939
+ <pre>
940
+ <a href="#pgrmc">$PGRMC</a> - Sensor Configuration Information
941
+ <a href="#pgrmce">$PGRMCE</a> - Sensor Configuration Information Enquiry
942
+ <a href="#pgrmc1">$PGRMC1</a> - Additional Sensor Configuration Information
943
+ <a href="#pgrmc1e">$PGRMC1E</a> - Additional Sensor Configuration Information Enquiry
944
+ <a href="#pgrmi">$PGRMI</a> - Sensor Initialization Information
945
+ <a href="#pgrmie">$PGRMIE</a> - Sensor Initialization Information Enquiry
946
+ <a href="#pgrmo">$PGRMO</a> - Output Sentence Enable / Disable
947
+ <a href="#pslib">$PSLIB</a> - Tune DPGS Beacon Receiver
948
+ </pre>
949
+ <p>A few Garmin GPS receiver units are known to receive these sentences, including
950
+ the GPS 16 and GPS 17 modules.
951
+ <p>[<a href="#top">Top</a>]
952
+
953
+ <hr size=1><a name="pgrmc"><h2>$PGRMC</h2>
954
+ <p>Sensor Configuration Information
955
+ <p>Used to configure the GPS sensor's operation. The GPS will also transmit
956
+ this sentence upon receiving this same sentence or the $PGRMCE sentence.
957
+ <p>$PGRMC,1,2,3,4,5,6,7,8,9,10,11,12,13,14*HH<br>
958
+ 1 = Fix mode (A=Automatic, 2=2D exclusively; host system must supply altitude, 3=3D exclusively)<br>
959
+ 2 = Altitude above/below mean sea level, metres<br>
960
+ 3 = Earth datum index. If the user datum index is specified (96), fields 4 to 8 must contain valid values, otherwise they must be blank.<br>
961
+ 4 = Semi-major axis, metres, 0.001 metre resolution<br>
962
+ 5 = Inverse flattening factor, 285 to 310, 10e-9 resolution<br>
963
+ 6 = Delta X earth centred coordinate, metres, -5000 to 5000, 1 metre resolution<br>
964
+ 7 = Delta Y earth centred coordinate, metres, -5000 to 5000, 1 metre resolution<br>
965
+ 8 = Delta Z earth centred coordinate, metres, -5000 to 5000, 1 metre resolution<br>
966
+ 9 = Differential mode (A=Automatic; output DGPS fixes when available otherwise non-DGPS, D=Only output differential fixes)<br>
967
+ 10 = NMEA 0183 baud rate (1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=300, 7=600)<br>
968
+ 11 = Velocity filter (0=None, 1=Automatic, 2-255=Filter time constant; seconds)<br>
969
+ 12 = PPS mode (1=None, 2=1 Hertz)<br>
970
+ 13 = PPS pulse length, N = 0 to 48. Length (milliseconds) = (N+1)*20<br>
971
+ 14 = Dead reckoning valid time, 1 to 30, seconds<br>
972
+ HH = Checksum
973
+
974
+ <hr size=1><a name="pgrmce"><h2>$PGRMCE</h2>
975
+ <p>Sensor Configuration Information Enquiry
976
+ <p>The unit will respond by transmitting a $PGRMC sentence containing the current default values.
977
+ <p>$PGRMCE*HH<br>
978
+ HH = Checksum
979
+
980
+ <hr size=1><a name="pgrmc1"><h2>$PGRMC1</h2>
981
+ <p>Additional Sensor Configuration Information
982
+ <p>Used to configure additional aspects of the GPS sensor's operation. The GPS will also transmit
983
+ this sentence upon receiving this same sentence or the $PGRMC1E sentence.
984
+ <p>$PGRMC1,1,2,3,4,5,6,7,8,9*HH<br>
985
+ 1 = NMEA 0183 output time, 1-900, seconds (Not applicable to GPS16A)<br>
986
+ 2 = Binary phase output data (1=Off, 2=On)<br>
987
+ 3 = Position pinning (1=Off, 2=On)<br>
988
+ 4 = DGPS beacon frequency, Kilohertz, 283.5 to 325.0 in 0.5 steps<br>
989
+ 5 = DGPS beacon bit rate (0, 25, 50, 100, 200)<br>
990
+ 6 = DGPS beacon scanning (1=Off, 2=On)<br>
991
+ 7 = NMEA 0183 version 3.00 mode indicator (1=Off, 2=On)<br>
992
+ 8 = DGPS mode (A=Automatic, W=WAAS only, R=RTCM only, N=None; DGPS disabled)<br>
993
+ 9 = Power save mode (P=Activated, N=Normal)<br>
994
+ HH = Checksum
995
+
996
+ <hr size=1><a name="pgrmc1e"><h2>$PGRMC1E</h2>
997
+ <p>Additional Sensor Configuration Information Enquiry
998
+ <p>The unit will respond by transmitting a $PGRMC1 sentence containing the current default values.
999
+ <p>$PGRMC1E*HH<br>
1000
+ HH = Checksum
1001
+
1002
+ <hr size=1><a name="pgrmi"><h2>$PGRMI</h2>
1003
+ <p>Sensor Initialization Information
1004
+ <p>Used to set the GPS sensor's set time and position and then commences satellite acquisition.
1005
+ The GPS will also transmit this sentence upon receiving this same sentence or the $PGRMIE sentence.
1006
+ <p>$PGRMI,1,2,3,4,5,6,7*HH<br>
1007
+ 1 = Latitude, dddmm.mmm format<br>
1008
+ 2 = Latitude hemisphere, N or S<br>
1009
+ 3 = Longitude, dddmm.mmm format<br>
1010
+ 4 = Longitude hemisphere, N or S<br>
1011
+ 5 = Current UTC date, ddmmyy format<br>
1012
+ 6 = Current UTC time, hhmmss format<br>
1013
+ 7 = Receiver command (A=Auto locate, R=Unit reset)<br>
1014
+ HH = Checksum
1015
+
1016
+ <hr size=1><a name="pgrmie"><h2>$PGRMIE</h2>
1017
+ <p>Sensor Initialization Information Enquiry
1018
+ <p>The unit will respond by transmitting a $PGRMI sentence containing the current default values.
1019
+ <p>$PGRMIE*HH<br>
1020
+ HH = Checksum
1021
+
1022
+ <hr size=1><a name="pgrmo"><h2>$PGRMO</h2>
1023
+ <p>Output Sentence Enable / Disable
1024
+ <p>$PGRMO,xxxxx,n*HH<br>
1025
+ xxxxx = Target sentence name (eg. GPGGA, GPGSA)<br>
1026
+ n = Target mode (0=Disable specified sentence, 1=Enable specified sentence, 2=Disable all output sentences except PSLIB, 3=Enable all output sentences except GPALM, 4=Restore factory defaults)<br>
1027
+ HH = Checksum
1028
+
1029
+ <a name="latlong"><p>[ <a href="#top">Top</a> ]
1030
+ <hr size=3><h2>Format of latitudes and longitudes</h2>
1031
+ <p>Where a numeric latitude or longitude is given, the two digits immediately to the left
1032
+ of the decimal point are whole minutes, to the right are decimals of minutes, and the remaining
1033
+ digits to the left of the whole minutes are whole degrees.
1034
+ <p>eg. 4533.35 is 45 degrees and 33.35 minutes. ".35" of a minute is exactly 21 seconds.
1035
+ <p>eg. 16708.033 is 167 degrees and 8.033 minutes. ".033" of a minute is about 2 seconds.
1036
+
1037
+ <a name="refs"><p>[ <a href="#top">Top</a> ]
1038
+ <hr size=3><h2>References</h2>
1039
+ <p>This information on <a href="http://www.nmea.org/">NMEA</a> sentences
1040
+ has been sourced from all over the 'net and I make
1041
+ no apologies for any inaccuracies or errors. Still, it's useful stuff.
1042
+ I wish to thank all the sources, which are <a href="links.html#nmea">listed</a> on
1043
+ my GPS Links page.
1044
+ Please <a href="../index.html#contact">contact me</a>
1045
+ if you know of freely available interpretations of sentences which
1046
+ are not on this page.
1047
+
1048
+ <p>[<a href="#top">Top</a>]<hr size=3>
1049
+ <address>Copyright &copy; Glenn Baddeley 2006<br>
1050
+ http://home.pacific.net.au/~gnb/gps/nmea.html was last updated 27th February 2006.<br>
1051
+ Report problems and send comments to <a href="../index.html#contact">Glenn Baddeley</a>.
1052
+ </address></body></html>