1nmea(n)                  NMEA protocol implementation                  nmea(n)
2
3
4
5______________________________________________________________________________
6

NAME

8       nmea - Process NMEA data
9

SYNOPSIS

11       package require Tcl  8.4
12
13       package require nmea  ?1.0.0?
14
15       ::nmea::input sentence
16
17       ::nmea::open_port port ?speed?
18
19       ::nmea::close_port
20
21       ::nmea::configure_port settings
22
23       ::nmea::open_file file ?rate?
24
25       ::nmea::close_file
26
27       ::nmea::do_line
28
29       ::nmea::rate
30
31       ::nmea::log ?file?
32
33       ::nmea::checksum data
34
35       ::nmea::write sentence data
36
37       ::nmea::event setence ?command?
38
39______________________________________________________________________________
40

DESCRIPTION

42       This  package  provides a standard interface for writing software which
43       recieves NMEA standard input data. It allows for reading data from  COM
44       ports,  files, or programmatic input. It also supports the checksumming
45       and logging of incoming data.  After parsing, input  is  dispatched  to
46       user defined handler commands for processing.  To define a handler, see
47       the event command. There are no GPS specific functions in this package.
48       NMEA data consists of a sentence type, followed by a list of data.
49

COMMANDS

51       ::nmea::input sentence
52              Processes and dispatches the supplied sentence. If sentence con‐
53              tains no commas it is treated as a Tcl list, otherwise  it  must
54              be standard comma delimited NMEA data, with an optional checksum
55              and leading $.
56
57
58              nmea::input {$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39}
59              nmea::input [list GPGSA A 3 04 05  09 12 "" "" 24 "" "" ""  2.5 1.3 2.1]
60
61
62       ::nmea::open_port port ?speed?
63              Open the specified COM port and read NMEA sentences when  avail‐
64              able. Port speed is set to 4800bps by default or to speed.
65
66       ::nmea::close_port
67              Close the com port connection if one is open.
68
69       ::nmea::configure_port settings
70              Changes  the current port settings. settings has the same format
71              as fconfigure -mode.
72
73       ::nmea::open_file file ?rate?
74              Open file file and read NMEA sentences, one  per  line,  at  the
75              rate  specified  by ?rate? in milliseconds.  The file format may
76              omit the leading $ and/or the checksum. If rate is <= 0 (the de‐
77              fault)  then lines will only be processed when a call to do_line
78              is made.
79
80       ::nmea::close_file
81              Close the open file if one exists.
82
83       ::nmea::do_line
84              If there is a currently open file, this command  will  read  and
85              process  a  single  line  from  it.  Returns the number of lines
86              read.
87
88       ::nmea::rate
89              Sets the rate at which lines are processed from the  open  file,
90              in milliseconds. The rate remains consistant across files, there
91              does not need to be a file currently open to use  this  command.
92              Set to 0 to disable automatic line processing.
93
94       ::nmea::log ?file?
95              Starts  or stops input logging. If a file name is specified then
96              all NMEA data recieved on the open port will be  logged  to  the
97              ?file?  in append mode. If file is an empty string then any log‐
98              ging will be stopped. If no file is  specified  then  returns  a
99              boolean  value  indicating if logging is currently enabled. Data
100              written to the port by write, data read  from  files,  or  input
101              made using input, is not logged.
102
103       ::nmea::checksum data
104              Returns the checksum of the supplied data.
105
106       ::nmea::write sentence data
107              If  there  is a currently open port, this command will write the
108              specified sentence and data to the port in  proper  NMEA  check‐
109              summed format.
110
111       ::nmea::event setence ?command?
112              Registers a handler proc for a given NMEA sentence. There may be
113              at most one handler per sentence, any existing  handler  is  re‐
114              placed.   If  no  command  is specified, returns the name of the
115              current handler for the given setence or an empty string if none
116              exists.  In  addition  to  the  incoming  sentences  there are 2
117              builtin types, EOF and DEFAULT. The handler for the DEFAULT  se‐
118              tence  is  invoked  if  there is not a specific handler for that
119              sentence. The EOF handler is invoked when End Of File is reached
120              on the open file or port.
121
122              The  handler  procedures,  with  the  exception  of  the builtin
123              types,must take exactly one argument, which is  a  list  of  the
124              data values.  The DEFAULT handler should have two arguments, the
125              sentence type and the data values.  The EOF handler has no argu‐
126              ments.
127
128
129              nmea::event gpgsa parse_sat_detail
130              nmea::event default handle_unknown
131
132              proc parse_sat_detail {data} {
133                  puts [lindex $data 1]
134              }
135
136              proc handle_unknown {name data} {
137                  puts "unknown data type $name"
138              }
139
140

BUGS, IDEAS, FEEDBACK

142       This  document,  and the package it describes, will undoubtedly contain
143       bugs and other problems.  Please report such in the  category  nmea  of
144       the  Tcllib  Trackers  [http://core.tcl.tk/tcllib/reportlist].   Please
145       also report any ideas for enhancements you may have for either  package
146       and/or documentation.
147
148       When proposing code changes, please provide unified diffs, i.e the out‐
149       put of diff -u.
150
151       Note further that  attachments  are  strongly  preferred  over  inlined
152       patches.  Attachments  can  be  made  by  going to the Edit form of the
153       ticket immediately after its creation, and  then  using  the  left-most
154       button in the secondary navigation bar.
155

KEYWORDS

157       gps, nmea
158

CATEGORY

160       Networking
161
163       Copyright (c) 2006-2009, Aaron Faupell <afaupell@users.sourceforge.net>
164
165
166
167
168tcllib                               1.0.0                             nmea(n)
Impressum