Some visitors have inquired about client applications. See the Clients section below.
Since the serial port on a computer system is a scarce resource, and since I would like to use several tools simultaneously to analyze the NMEA-0183 sentences output by my GPS receiver, I'm developing a simple server application that distributes NMEA data to a number of listeners.
This software is under development in my spare time, and it still lacks some of the capabilities I personally need, but I've achieved good results already with Garmin and Motorola GPS receivers and listener applications ranging from telnet sessions to custom Java visualization and analysis tools.
I intend to have the finished product support the following requirements:
Read NMEA-0183 sentences from the GPS receiver connected to the designated serial port and pass them on to all connected listeners.
Support a minimum of ten simultaneous connected listeners, either on the same system as the server or on other systems connected via network.
Simulate a NMEA-0183 data stream by reading a log file previously recorded. Support the reading of both uncompressed text files and gzip-compressed text files.
Allow clients to select which sentence types they wish to receive, thereby reducing network traffic and client workload.
Of the capabilities listed above, only the last one remains to be implemented.
One capability that is intentionally not a requirement is to support applications that are designed to work directly with a serial port. This application is intended to support custom analysis tools running on a local-area network. It will use standard IP stream sockets for communication.
I'm not the first one to invent this wheel; see the Similar Software by Others section for a few of the alternatives I've discovered.
In the design I'm currently pursuing, I emphasized the need for the server to avoid being adversely affected by slow or faulty connections. On connections that are too slow or are experiencing severe transmission problems, the server will allow messages to be lost. Other connections will not be made to suffer from difficulties on a problem connection.
This is it:
nmead -h
Since the server is still under development in my spare time, what time I do spend on the project is still spent either on the server itself or on client applications. Once I've reached a good stopping point with the server, I'll provide better user documentation.
The software can be freely distributed under the terms of the GNU General Public License (GPL). The reference platform is Red Hat Linux 6.2, but I expect the software to be compatible with other UNIX workalikes as well. I also will investigate the option of porting the software to Windows platforms using the Cygwin development tools.
This software is still under development. Command-line options, default values, and program behavior are all subject to change. Comments, bug reports, and criticism are welcome (use this contact form).
The latest version (01.01.00) is here (gzipped tar ). This update is intended to eliminate some portability problems that were discovered in the previous version.
The previous version is here (gzipped tar ).
The files referenced above are stored on the server in gzipped tar format, but I've learned that some browsers, if so configured, will automatically unzip the file upon downloading, making it an ordinary tar file even if it retains the .gz extension.
If you use the command
tar xzf nmead.src.01.01.00.tar.gzand get errors, try omitting the z argument.
You'll need a Linux system or a similar UNIX-like system with a C compiler and linker. You'll also need zlib if it isn't already installed on your system.
Most of the client tools I use aren't suitable for publishing, but here's an example client application.
I'm not the only one who's had the bright idea of distributing navigation data via IP. Some of the alternatives include:
GPSd has a similar function to my own software and has support for DGPS over IP.
I know I've seen more, but their locations are eluding me for the time being.