Many nautical instruments generate messages in an NMEA 0183 or NMEA 2000 (N2k) format. These messages might give the boat speed or water depth. OpenSkipper is designed to process and display the data contained in these messages. OpenSkipper can also process AIS messages which give information about other vessels; these messages might be received by your VHF radio or AIS receiver, and then transmitted via an NMEA 0183 or NMEA 2000 connection to a PC.
OpenSkipper can receive NMEA 0183, NMEA 2000 (N2k) and AIS messages and decode (some of) them to extract the data in the messages. NMEA 0183 and AIS messages can be received via a COM port or the internet (via UDB or TCP/IP). NMEA 2000 messages can be received using the Actisense NGT1-USB NMEA-to-USB converter or over the internet. We describe each of the message sources as a stream. OpenSkipper can also process log files (in various formats) that have been recorded from NMEA instruments.
As well as processing incoming streams, OpenSkipper can forward messages (or generate new messages) into outgoing streams. For example, N2k messages might be forwarded to another computer using a TCP/IP connection, or broadcast over a network using UDP. This allows scenarios such as a yacht relaying its N2k data to a chase boat to give the chase boat’s crew a real time display of the yacht’s performance. Streams can also be recorded to (and replayed) from log files.
OpenSkipper provides editors (called ‘explorers’) for displaying and editting the XML definition files used to describe how an N2k, AIS or 0183 message should be decoded. For NMEA 2000, these XML files will can be produced using the Canboat software. (See the Canboat pgn.h file for the latest CanBoat PGN information.) The definition files are not yet complete; we welcome more definition details and corrections. Note that OpenSkipper has default definition files built in to the executable. You can edit and save these to disk, and then use them as your default definitions.
The user can define ‘Parameters’ such as speed that automatically update their values when the appropriate N2k or 0183 message arrives. A parameter such as ‘speed’ can be updated by either N2k or 0183 messages. The parameter definitions define the named fields given in the N2k, AIS and 0183 definitions that should be used to update the value for each parameter.
The user can design their own screen displays that are used to graphically display values of parameters. As of April 2014, these are defined using a ‘Displays.xml’ file. Any standard C# control can be added, with an ‘extender’ being provided to add NMEA properties specifying which Open Skipper parameter should be displayed, and the name of the control’s property that should be used to do this. More sophisticated custom controls can also be built that directly interpret the messages.
OpenSkipper has a simple built in Web server. (You need admin privileges to run this under Vista.) This lets you serve up a selection of parameters which get updated in real time. Using an ad-hoc wireless network, you can now view your boat instruments on your WiFi cell phone or tablet.
There is still lots to do. As always, we hope to expand the code and its documentation over time, but we hope this is a useful first step. Andrew Mason
PS: We are not experienced C# programmers; this is our first experiment with C# and so there will be mistakes that we would love to have corrected. All feedback welcome.
All copyrighted terms, including NMEA, NMEA 018, NMEA 2000, Actisense, and NGT1, are the property of their respective owners. Everything provided in Open Skipper is available in the public domain, and has not been obtained as the result of signing any non-disclosure agreements with Actisense or NMEA.