NMEA compliant marine navigation
instrumenten.jpg
The application in this project encapsulates the complexity of handling NMEA sentences and fires events with the name of the NMEA sentence. Controls on userinterfaces can display this information in several ways, depending on the capabilities of the control. A working example of a managementconsole userinterface with two different displays is also provided.

NMEA is a standardized protocol for communication between marine navigation devices. Also see www.nmea.org for a further description. Communication between navigation devices uses NMEA messages that contain NMEA sentences. In a certain configuration, devices can act as originators or senders of NMEA data. These are called NMEA Talkers. Other devices act as consumers of the NMEA data. They are called NMEA Listeners.

A lot of devices also have options to connect via RS232 or USB with computers. The computer will act as NMEA Listener. In that role, it has to know how to handle the NMEA datastream.
This project intends to deliver uniform handling of NMEA messages / sentences. The information from these sentences can be displayed on dedicated controls or in any other desired control. Aimed on both windows clients and on web clients.

The project consists of four main parts:
1. a part that manages the behaviour and preferences of the application
2. the part that handles communication with the NMEA talkers via RS232 or USB
3. the part that translates NMEA sentences into data that is ready to be displayed
4. the part that contains the controls and the user interface to display / monitor information from the NMEA talkers

The basic architecture of this application is based on events. When the application receives a complete and correct NMEA sentence, an appropriate event with the NMEA name of that sentence is broadcasted. Every control with the capability of handling that event, has a suitable eventhandler. Controls can subscribe to events in that way an display the information.

Last edited Nov 4, 2007 at 8:13 PM by PeterKlein, version 6