NavMonPc

A Windows Program for the Display, Capture, and Playback of NMEA data.

 

New Website

The latest versions are on the new NavMonPc.com website

 

Current Revision 0.53 (June 11, 2009)

Please see the Revision History section for new features and changes. The documentation has not been updated.

Look here for description of the new dials.

And look here for description of the new Coastline Chart feature.

NavMonPc discussion group: http://tech.groups.yahoo.com/group/NavMonPc/

Serious Disclaimer: NavMonPc is a work in progress, and almost certainly contains bugs, errors, and omissions. It may or may not be useful to you. I make no promises that it will not cause your computer to explode, but if it does, be assured that it was accidental and I am very sorry. However, I won't be sorry enough to pay for any damages: direct, incidental, or imaginary.

NavMonPc is the sole property of Paul M. Elliott, and is offered on a limited basis free of charge for non-commercial use. I reserve the right to change the terms of this offer at any time.

NavMonPc, Copyright 2008, 2009, Paul M. Elliott and Dirk Lison


Installation

Download and save, or just click on the NavMonPc setup program.

Please note that your computer graphics adaptor must be set to 32-bit "color quality".
Due to a bug in the graphics library used in NavMonPc, the charts and dials will not display if the color quality is set to 16-bit.

This will install NavMonPc on your computer. This will create the following directories:
C:\Program Files\NavMonPc
C:\Documents and Settings\USERNAME\Application Data\NavMonPc

If the Windows environment variables point to a drive other than "C:", these directories will be created according to the environment variables.

The program file "NavMonPc.exe" will be written to the C:\Program Files\NavMonPc directory.
The configuration file "NavMonConfig.txt" and the alarm soundfiles "Alarm1.wav" and "Alarm2.wav" will be written to the C:\Documents and Settings\USERNAME\Application Data\NavMonPc directory.

The setup program will also write several files to the system directory (usually C:\WINDOWS\SYSTEM32). These files are:
"NSCEPictureBox.ocx", which provides graphics support tools.
"NSBComDlg.dll", which contains file management and other common Windows tools.
"NSBControls.dll", which contains the "listbox", used here for the on-screen logging.
"MSCEFILE.DLL", also contains file management tools.
"SerialXP.dll", which provides enhanced serial port support.
"cswskax5.ocx", which provides TCP/IP support functions.

The setup pogram will also install "Franson Serialtools", which provide virtual serial ports (useful for providing NMEA inputs to other programs).

I have seen the setup program fail during the initial installation, apparantly because it was unable to create a directory. If this happens, just run the install program again -- it should run OK.


Configuration

When you run NavMonPc, it will first try to read the configuration file "NavMonConfig.txt" If this file does not exist, or if it is not in the proper format, NavMonPc will start in a default configuration. When shut down, NavMonPc will save its current configuration, overwriting "NavMonConfig.txt". It is possible to read an alternate configuration file, or save the current configuration to a different file, through the File/Get Config and File/Save Config menubar selections.

Once NavMonPc has started, the first thing to do is set up the NMEA input sources. These are configured by selecting File / Serial Port A, B and File / Serial Port C, D in the top menubar. This will bring up the Serial Connections or More Serial Connections window:



Serial Port Configuration Screens

You can select four different serial channels. NMEA data can be accepted from both ports. Note the AutoStart checkbox. When this is selected, NavMonPc will attempt to connect to the selected ports automatically at program start.

The serial port # and baudrate can be configured, while parity, # of data bits, and # of stop bits is fixed at "N,8,1"

Each serial port may be configured to transmit all NMEA data received on any NavMonPc input, by selecting the Echo NMEA box.

At the bottom of each of the input source configuration panels is a box that displays the data as received from the source.

Note that the RTS output of Serial Channel A may be selected to drive an external alarm during a NavMonPc alarm condition. The RTS output is normally low, and will be driven to a positive voltage during an alarm condition. The polarity may be optionally inverted.

Also note that the CTS input of Serial Channel A may be configured as a Man Over Board (MOB) alarm input. When this option is selected, any transition on this input will trigger the MOB alarm. For example, a pushbutton that connects between CTS and +12V may be used.

Once the data sources are configured, close the Serial Port window by clicking on the "X-box" in its upper right corner.

You should now see data displayed on the dials.

If the connection to these serial ports is lost, for example if a Bluetooth serial interface is disrupted, the program will attempt to reconnect until either the connection is restored or the user clicks the Disconnect button.

NavMonPc can also receive NMEA input from a network TCP/IP connection. Select File / TCP/IP to bring up the configuration window:


Network Configuration

If the connection to the network port is lost, the program will attempt to reconnect until either the connection is restored or the user clicks the Disconnect button.

Finally, all received NMEA data can be echoed to as many as three "virtual ports". These ports are available to other programs (a charting program, for example):


Virtual Port Configuration

These settings will be saved when the NavMonPc is closed, and will be restored when the program is next started.


Logging NMEA Data

To log the NMEA data received by NavMonPc, select File/Logging in the top menubar. This will bring up the Logging window:


Data Logging

Click on the NMEA Log File button to select or enter the filename where the NMEA data should be written, then click Start Log. Click Stop Log to stop. Data will be appended to the logfile, so you can start, stop, and restart logging without losing previously-saved data.

NavMonPc will also create a comma-delimited spreadsheet (CSV) file, with selectable fields and sample rate.

Auto-Log option: This automatically creates a NMEA or CSV logfile, starting a new log at midnight (computer time). The location of this file is specified in the NavMonConfig.txt file on the "Logging" line:

'Logging, AutoLog, LogFileRoot, AutoLog2, SsLogFileRoot, cbAlog2Interval.ListIndex, <sixteen log options>
Logging, 0, C:\Documents and Settings\Elliott\My Documents\Log\, 0, C:\Documents and Settings\Elliott\My Documents\Log\, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0

In the example above, the "LogFileRoot" and "SsLogFileRoot" are specifying the "Log" directory in "My Documents". These automatically generated logfiles will be named with the current date (for example, "NmeaLog-2-9-2009.txt" and "SsLog-2-12-2009.csv")

GPS Time option: Selecting this option will cause the Auto-Log to use GPS time for the naming and creating of the daily log. Otherside, the computer's local time will be used.


Playing Back NMEA Data Files

To log the NMEA data received by NavMonPc, select File/Play File in the top menubar. This will bring up the Play File window:


File Playback

Click the NMEA File button to select the NMEA file, then on Play to start the playback. The playback speed can be controlled with the 1X, 10X, 100X, and Pause buttons (these speeds are only approximate).

Pressing the Stop button will stop the playback. Pressing Play again will restart the playback from the beginning of the file.

NOTE: While the file is playing, NavMonPc will also still accept data from the normal input sources. This will often result in very confusing results, so you will probably want to disconnect the input sources (on the "Connections" window) before starting a playback. When playback is Paused, the processing of all NMEA data (including from the normal input sources) is also paused.


Other Options

NavMonPc has other options, accessed through the Options/Options menubar selection:

:
Options

The first three of these control the behavior of NavMonPc at startup and shutdown, and allow the program to accept NMEA data with missing or corrupt parity.

The Use True Bearings option determines the way bearings are displayed throughout the program. If this option is checked, the bearing mode is True, otherwise Magnetic bearings are used. Magnetic bearings are calculated where necessary by applying the Magnetic Variation to the True bearings. When the Use GPS MagVar option is selected, the program will use the Variation provided by the NMEA instruments. Otherwise, the Variation will be taken from the User Mag Var field.

Display Filtered SOG Data: This provides a filter for the raw SOG data, which is useful if the GPS outputs a noisy SOG.

The Vessel Name and GPS Location fields are used to set the name of your vessel (used on the plotter display), and the location of your GPS antenna. This data is saved in the configuration file and is restored when the program is started.

The GPS Location fields are in units of meters, and are defined as follows:

When the AIS plotter is set to Plot to Scale (see AIS / More Options), these dimensions are used to accurately size and locate your vessel on the screen.

The Units buttons select whether English or Metric units will be displayed as appropriate. Note that regardles of this option setting, speed is always displayed in Knots, and distances greater than approximately 0.5 NM are displayed in nautical miles.


Waypoint Options

NavMonPc will typically be configured to display the active waypoint information provided by the NMEA data. Optionally, a waypoint can be hand-entered, the current active waypoint can be captured and locked, or the current position can be captured. This is done in the "Waypoint Options" window:


Waypoint Options

When Activate User Waypoint is checked, any NMEA-provided waypoint will be ignored, and the user-defined waypoint will be displayed. NavMnPc will calculate the Range, Bearing, Cross-Track Error, Time To Go, and Closing Velocity, using great-circle methods


AIS


AIS

The AIS screen is activated by selecting AIS from the menubar.

Please read AIS Display Details for additional information


Your vessel is shown at the center of the screen, much like a RADAR display. Your vessel, and all displayed targets show their heading, and they project a "course and speed" vector. The vector time length scales with the full-scale range, or can be controlled with the Speed Vector Length buttons.

The target orientation can be chosen from the North Up, Heading Up or Course Up options.

On a crowded screen it may be useful to select the Show Cautions or Show Alarms button. Show Cautions will cause the display to show only those targets in the Alarm or Caution state. Show Alarms will cause only targets in the Alarm state to be displayed.

More Options -- This button displays additional display options:

Own Track -- This control activates the display of your vessel's track, either over the previous hour (points stored at ten-second intervals), or the previous 24 hours (points stored at ten-minute intervals).

Guard-Zone -- This button displays the Guard-Zone settings. There are two conditions that can be enabled, and when a target ship meets either of these conditions the alarm will sound:

Anchor Watch -- This button displays theAnchor Watch controls:

 

AIS Targets -- Click on a target, or select it from the drop-down Targets list, to display further information about the target. The Extend Vector to CPA option on this information screen will show the Closest Point of Approach of the selected target to your boat.


Extended Vectors

 

If an AIS target meets either one of the Guard Zone criteria, an alarm will be triggered:


AIS Alarm Display

The only way to clear this alarm state is to reconfigure the Guard Zone Options, or if the target(s) no longer meet the alarm criteria.

"Own Vessel" Tracks

Anchor Watch


Vessel Tracks and Anchor Watch

NOTE: The AIS range, bearing, CPA and TCPA calculations are done using "flat earth" math to reduce the load on the computer. For the typical AIS ranges (under 100 nm), no significant error is introduced by these simplifications. At extreme ranges the data presented may be inaccurate.


Stripcharts

There are stripcharts available for true wind speed / direction (Windchart), Course Over Ground / Speed Over Ground (Speedchart), and water temperature / depth (Waterchart).


Windchart

The Windchart screen shows the True Wind Direction and Speed history. Timescales of 10 and 100 minutes, and 12 hours can be displayed. The 100 minute and 12 hour displays show the average wind speed on top of the maximum and minimum speeds. True Wind Direction scale can be zoomed in for a detailed view, and it can be centered to the current TWD. Here is a detail view of a 12-hour windchart showing average, max and min windspeeds:

Note that the 12-hour chart displays samples taken every 72 seconds, and the 100-minute chart displays samples every ten seconds. The maximun and minimun speeds displayed are those that occured during the sample interval.


Speedchart

The Speedchart shows COG and SOG history. Timescales of 10 and 100 minutes, and 12 hours can be displayed. The 100 minute and 12 hour displays show the average SOG speed on top of the maximum and minimum speeds. The COG scale can be zoomed in for a detailed view, and it can be centered to the current COG.


Waterchart

The Waterchart shows water temperature and depth history Timescales of 10 and 100 minutes, and 12 hours can be displayed. The 100 minute and 12 hour displays show the average depth on top of the maximum and minimum depth. The temperature scale can be zoomed in for a detailed view, and it can be centered at 40, 50, 60, 70, 80, and 90 degrees..


Man Over Board

The top-right buttom on the NavMonPc screen is "MOB" (Man Over Board). A MOB alarm can be triggered by clicking this button, or by a transition on the Serial Port 1 CTS input (see the Configuration section of this document). When a MOB condition is activated, the AIS screen will be displayed with a red (magenta) "X" displayed at the boat's position at the time of activation. The display will be placed in a course-up orientation, and will automatically range-scale to keep the MOB displayed on screen:


MOB Alarm



Depth Alarm

The Depth alarm can be configured for shallow water and/or deep water. This option screen can be opened by either selecting "Options / Depth Alarm" or by clicking on the Depth dial.


Depth Alarm Configuration

 

A Depth alarm will be triggered when either of the deep or shallow conditions are met:


Depth Alarm


Debugging Tools


Debug Screen

NavMonPc provides the capability to brouse through the NMEA input data by means of a Debug screen (select "Options / Debug"). The NMEA messages processed by the program will be indicated by the activated buttons on the left of the screen. You can see the sentence most recently received by clicking the button. Pressing the Clear Stats button will reset all the NMEA sentence buttons. The "selection box" to the right of Clear Stats shows all other NMEA messages seen, and by selecting the message type you can see the most recent message received.

You may see other debug options and features on this screen (here, the "Decode AIS VDO" and "Enable Debug Messages" checkboxes). Touch these at your own risk!


A Note on Alarm Sounds

There is a MOB alarm sound, and a General alarm sound that will be played. These are standard soundfiles, named "Alarm1.wav" for the MOB alarm, and "Alarm2.wav" for the general alarm, and are located in the same directory as the "NavMonConfig.txt" file (usually "Application Data\NavMonPc"). You can substitute other soundfiles of your choosing (they must be named "Alarm1.wav" and "Alarm2.wav").


List of NMEA sentences that are understood (some perhaps incompletely) by NavMon:

"VDM" (AIS)
"BWC"
"DBK"
"DBS"
"DBT"
"DPT"
"GGA"
"GLL"
"HDG"
"HDM"
"HDT"
"MTW"
"MWD"
"RMB"
"RMC"
"ROT"
"VDR"
"VHW"
"VPW"
"VTG"
"VWR"
"VWT"
"WCV"
"WPL"
"XTE"
"ZDA"

At the moment, all data from all ports is combined and processed. There is the option of disabling a particular sentence-type, and a rudimentary way to prioritize RMC sentences from different sources, but I plan to eventually provide much more flexible source selection and routing.

Once the data has made it through the first-stage filter, I have a fixed precedence for choosing which data to use. The order is fairly arbitrary, but once I find a source with valid data, the remaining sources (that are lower in the pecking-order) are ignored.Here is my priority order:

Magnetic Variation: User-input, HDG, RMC
Lat/Lon: GLL, GGA, RMC
GPS Time/Date: RMC, ZDA, GGA, GLL (GGA and GLL give time only)
COG/SOG: VTG, RMC
Heading: HDT, HDM, HDG, VHW
Speed Through Water: VHW
AWA/AWS: MWV, VWR
TWA, TWS, TWD: MWD, VWT, MWV (if MWV only gives relative wind I calculate true from AWA, AWS, SOG, HDG), VWR (calculated from AWA, etc)
Depth: DBT, DPT
Water temp: MTW
Waypoint/XT: User data, RMB, WCV (name), WPL (name), XTE (crosstrack)


NavMonConfig.txt

This is the program configuration file, usually stored in the "Application Data\NavMonPc" directory. Any line starting with a " ' " is a comment. Each configuration field is preceeded by a comment line describing the options. "1" = true, "0" = false.

Note that the "Logging" option sets the directory where the automatic logs arestored (default is "C:/"), with the lognames being "NmeaLog-" and "SsLog-", followed by the system date.

The "Rmc" configuration option lets you specify two RMC sources in their order of priority. If no priority is specified then all RMC messages will be decoded. If neither of the priority RMC messages is received then any RMC message will be used.

All other configuration options can be set in the program, and all will be saved at program exit.

Example NavMonConfig.txt file:

' NavMonPc Version 0.35 Configuration File: C:\Documents and Settings\Elliott\Application Data\NavMonPc\NavMonConfig.txt
' Save Date: 4/27/2009 12:07:19 AM
'InitialConfig, Load on Start, Save on Exit, Ignore Parity Errors, Use True Bearings, Use GPS MagVar, User MagVar, Use Filtered SOG
InitialConfig, 1, 1, 0, 1, 1, 15.4, 1
'Position, Lat (+/-DD.ddddd), Lon (+/- DD.ddddd)
Position, 38.394268321991, -122.99940999349
'SerialConfig, portA, BaudA, AutoStart, cbAlarmA, cbMobA, cbInvertRts, portB, BaudB, AutoInitB, VPortA, AutoInitVPortA, VPortB, AutoInitVPortB, VPortC, AutoInitVPortC
SerialConfig, COM16, 38400, 0, 0, 0, 0, COM15, 38400, 0, [Closed], 0, [Closed], 0, [Closed], 0, 0, 0
'SerialConfig2, portC, BaudC, EchoC, AutoStartC, portD, BaudD, EchoD, AutoStartD
SerialConfig2, [Closed], 38400, 0, 0, [Closed], 38400, 0, 0
'NetworkConfig, address, port, AutoStart
NetworkConfig, 207.7.148.216, 9009, 0
'AisConfig, North Up, Heading Up, Course Up, Show All, Show Cautions, Show Alarms, Relative Vectors, Target Triangles, Show Names, Plot to Scale, Auto-TCPA Vector, GZ Radius, GZ CPA, GZ TCPA, Range, Vector, ExtrapolatePosition
AisConfig, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 11, 15, 1
'Waypoint, LatDeg, LatMin, LatNS, LonDeg, LonMin, LonEW, WpName, WpActive
Waypoint, 37, 48.7940, N, 122, 26.8440, W, 4/26/2009 11:45:23 PM, 0
'Stripchart, TimeScaleIndex(0), TimeScaleIndex(1), TimeScaleIndex(2), RightScaleIndex(0), RightScaleIndex(1), RightScaleIndex(2), ZoomArrayIndex(0), ZoomArrayIndex(1), ZoomArrayIndex(2), LeftChartCenter(0), LeftChartCenter(1), LeftChartCenter(2)
Stripchart, 0, 0, 0, 2, 0, 2, 0, 0, 1, 240, 330, 60
'Logging, AutoLog, LogFileRoot, AutoLog2, SsLogFileRoot, cbAlog2Interval.ListIndex, <seventeen log options>
Logging, 0, C:\Documents and Settings\Elliott\My Documents\Log\, 0, C:\Documents and Settings\Elliott\My Documents\Log\, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1
'Logging2, GpsTime, GpsTime2
Logging2, 0, 0
'Rmc, RmcPriority1, RmcPriority2
Rmc, ,
'DepthAlarm, cbDoSetDepth, tbDoDepthSetpoint, cbDoSetDeepDepth, tbDoDeepDepthSetpoint, DepthOffset
DepthAlarm, 0, 0, 0, 0, 0
'OwnShipData, OwnShipName, OwnShipGpsLocA, OwnShipGpsLocB, OwnShipGpsLocC, OwnShipGpsLocD, Spare
OwnShipData, VALIS, 13, 1, 4, 1, Spare
'NmeaOptions, UseBwc, UseDbk, UseDbs, UseDbt, UseDpt, UseGga, UseGll, UseHdg, UseHdm, UseHdt, UseMtw, UseMwd, UseMwv, UseRmb, UseRmc, UseRm1, UseRm2, UseRot, UseVdr, UseVhw, UseVpw, UseVtg, UseVwr, UseVwt, UseWcv, UseWpl, UseXte, UseZda
NmeaOptions, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

 

Revision History

Rev 0.53 Changes
* Added back the 1,5,10,15,30-second logging intervals.
---Note that when playing back a NMEA logfile at high-speed , logging intervals under 1 minute will behave erratically.
---Also, when using multiple GPS sources, the 5-second logging interval may behave erratically.
* Fixed dial speed alarm pointer overscale
* Fixed wrong color TWS min/max radial

Rev 0.52 Changes
* Added alarms for HDG, COG, SOG, TWD, TWS, TWA (click on dial faces to access the alarm settings)
* Slight changes to Depth alarm

--- Note: When one of these alarms triggers, it will remain active until you click on the "alarmed" dial. Look in "Options / General Options" to access alarm muting.
* Added more log fields: AWA and AWS
* Added Filters for TWD, TWA, TWS, AWA, AWS. Look in "Options / General Options" to access these filters.
* Fixed: TWS column in log is displaying cINVALID as "-9999"
* Added resize and column-width save/restore to Log screen.
* Added resize to Chart screens.
* GPS time is now displayed in 24-hour format: "00:00:00 UTC" (UTC stands for "Universal Time Coordinated", AKA "GMT" or "Zulu")
* Cleaned up the "print" when re-trying a dropped serial connection (now a Debug message)
* Cleaned up "play file" file selection

Rev 0.51 Changes
* Added a file that was missing from the Rev 0.50 build. No other changes.

Rev 0.50 Changes
* NOTE!!! The NavMonConfig.txt file format has changed, and the old ones will not be read.
* Fixed "AIS plotter screen panning" problem when MagVar is uninitialized
* Split options between "General Options" and "GPS Options"
* Added AIS target-type display selection
* Added magnetic variation calculation
* Added dimension display on "Vessel Data" option screen
* Added MOB and General silent alarm option
* Fixed hours:minutes:seconds display calculation
* Fixed AIS "Afterlife" time initialization bug
* Fixed bug, was saving waypoint lat/lon as integers, losing valuable minutes
* Added "Log" screen, uses spreadsheet log interval and GPS/local time/date option
* Fixed remaining (I hope) regional issues with decimal point parsing

 


Rev 0.49 Changes
* Fixed bug in NMEA string parsing, where fStoSng() was choking on numbers with a leading "+/-"
* Now recognizes RMB waypoints having no lat/lon data.
* Fixed bug in RmbXte value assignment.
* Provided option to force Hdg = Cog in the absence of valid heading data.
* Note that NMEA "DPT" provides depth and offset. A negative offset means the transducer is that far above the keel. In this case the value displayed will be depth below keel. A positive offset means the transducer is that far below the surface. In this case, the value displayed will be the water depth.

Rev 0.48 Changes:
* (Rev 0.47 was not released)
* Fixed HDG bug
* Fixed AIS target "afterlife" bug
* Coastline file is now re-loaded automatically on startup
* Added configurable SOG and COG filters (see "Options/Options")

Rev 0.46 Changes:
* (Rev 0.45 was not released)
* Fixed GGA GPS fix status indication (is number, not "A")
* Fixed lat/lon value parsing in international mode (see rev 0.27) - This bug was in the parsing of the NMEA string, a compiler update had changed the behavior of the "IsNumeric()" function.
* Added "Afterlife" timeout options to Ais "More Options" window. The AIS target turns grey when six minutes have gone by without a transmission,
'
the "Afterlife" setting determines how long a greyed (Ghost) target remains visible.
* Changed AIS target countdown timer to count-up (internal detail, no visible effect)
* Fixed RMC priority header test to no longer match on empty or blank. I had noticed that the high-priority RMC message option was being triggered by random bad data. Fixed it.
* Fixed Spreadsheet Log bug that occured during high-speed playback, and in the case of multiple disagreeing NMEA GpsTime inputs.

Rev 0.44 Changes:
* Based on Rev 0.43, and still somewhat experimental
* fixed ComDlg reset, file locations should be remembered now
* Redesigned NMEA data processing in the "Form1_Timer" main calc loop.
There are now individual "age" timers for the major variables (that are sourced from the NMEA data).
These allow valid data to be retained in favor of newer invalid data, but after a 15-sec timeout,
the new invalid data will be written and any other values that are calculated from this invalid data will also become invalid.
This lets the program "ride through" brief glitches, or multiple sources of the same NMEA sentence, one with good data,
and another with invalid data.
* The Max/Min indicators now ignore invalid data
* Extensive internal use of the "cINVALID" value to indicate data that should not be used.
* The user magvar input is now in deg, min, e/w form, as is the GPS magvar display.
* Fixed RMC and ZDA date formatting: now stored as MM/DD/YY (was DD/MM/YY)
* Spreadsheet log now uses GPS time for log interval if "GPS Time" is enabled in the field selections, otherwise uses computer time
* Moved Own Vessel data to "Options/Vessel Data" window
* AIS Target tracks now plotted in grey color

Rev 0.43 Changes:
* Based on Rev 0.42, and highly experimental
* Added rudimentary charting, using data from the NOAA "Coastline Extractor" : http://rimmer.ngdc.noaa.gov/ (select the lat/lon range and detail level of interest)
* NavMonPc will read the ".dat" files produced by the Coastline Extractor. These must be in the "Mapgen" format, which consists of tab-delimited Longitude / Latitude pairs (this is an ASCII file)
* Please keep the point set to a few thousand points or less. I have tried using a 100,000 point database, but the program slowed to the point where it became very sluggish.
* If you get into trouble by reading a too-large file, click the "Get Chart File" button again. This should cancel the file read.
* To read in a coastline point set, look at the AIS "More Options" screen, where you will find the "Install Coastline" button. For the moment, the coastline data has to be re-installed every time the program is run.
* You can load new coastline files as often as you want -- the previous data will be overwritten.
* This is just an experiment. To be usable, it would require automatic location-based loading/unloading of the point data from a much larger dataset. It's kind of fun to look at, though.
* Here is a link to a screenshot of the San Francisco area coastline: Coastline.jpg

Rev 0.42 Changes:
* Window resizeable, AIS dial grows with window.
* Added User Position (see "Options").
* Added AIS target tracks, approx 15 minutes at an average AIS update rate of 10 seconds.
* Debug options for screen-size are gone. Use the regular Windows "Maximize" and "Minimize" buttons, or drag the window edges (these edges can be hard to locate)

Rev 0.41 Changes:
* Better dial configuration: Click on dial face or use top-line menu to access configuration, <CONTROL>-Click for quick min/max reset

* Depth options are now located on the DepthDial config window: Click on dial to access, or use top-line menu)
* Internal cleanup of data and objects
* C
onfiguration file changes (you may lose some previously set options)
* It is possible to move the dial positions around by editing the config file. Here is an example:

'Dial, InstanceName, Row, Column, cbShowMinMax.value, cbShowMinMax2.value, cbScale.ListIndex
Dial, WindSpeed, 2, 2, 1, 0, 5

Note the Row and Column parameters. These are indicating that the Windspeed dial is in row 2, column 2. The available rows are 1 and 2, and the columns are 1-2-3-4. I do no error checking, so be careful not to put one dial on top of another ot enter an invalid number. If you mess it up, just delete the offending line from the config file, and the default location will be used instead (and a fresh config line will be saved on exit).

* There is a debug option for screen-size: Small, Medium, Large. There are actually 4 rows and 8 columns available in the large screen. I am working on optional double-size dials, allowing you to build a custom screen with a mix of dial sizes and locations. All this is done with an eye towards future dial designs, for TBD data sources. At the moment these features aren't particularly useful, and may be dangerous.

 

Rev 0.40 Changes:
* Added Max/Min indicators to most dials (click on dial face to access configuration)

* Added scale options to speed dials (click on dial face to access configuration)
* Added User-Waypoint list
* Improved Waypoint dial display
* Depth dial now is a mini-chart
* Added Depth "Caution" setting

DialFunctionPrototype Changes:
* New dial features

Rev 0.37 Changes:
* Fixed magnetic variation bug in NMEA "HDM" and "MWD" sentences

Rev 0.36 Changes:
* Added metric units option, temperature in C, depth in M, length in M, range in M/NM

* Added distance-run and Course-run fields in spreadsheet log
* WPL Lat/Lon now being used. RMB missing lat/lon data now ignored
* (AIS) CPA vectors clipped at zero if TCPA is in the past.
* (AIS) Target RxAge now displayed in sec or min/sec
 

Rev 0.35 Changes:
* Fixed bug that was killing the chart displays and dials. This occured when trying to display data from NMEA sentence parameters that were "blank"
. The treatment of blank parameters which caused the display problem was changed in ver 0.34, and has been fixed in this revision.
 

Rev 0.34 Changes:
*
Fixed GLL decode (and others) where checksum was at the end of the last NMEA parameter. Stripped "*[cksum]"
* Fixed MWD decode, now converting mag TWD to true (compass) if true is not provided
* Fixed Waypoint dial bug

Rev 0.33 Changes:
* Fixed another TWD bug.
* NMEA Message selections are now saved and restored.

* NMEA message parity errors are now indicated (see Options / Debug).

Rev 0.32 Changes:
* Fixed another TWA / AWA calculation bug. Note that if different instruments give conflicting data, NaMonPc may not choose the correct one to display. Look at the new "Options / NMEA Options" screen for the option of de-selecting individual NMEA message types.

* Added a depth offset feature, allowing you to correct the displayed value for depth below keel, or surface depth (if you haven't already done this in your depthsounder calibration).
* Added keyboard maneuvering shortcuts for the AIS plotter screen. Use the arrow keys to shift left/right/up/down, use the "+" and "-" keys to zoom the scale in or out, and use the "Home" key to center on your vessel.

Rev 0.31 Changes:
This is a big list of enhancements, and so there are opportunities for new bugs. I suggest that you keep a copy of rev 0.30 handy, as this has proven quite stable. I have only partially updated the documentation.

* TWD bugfix - True Wind Direction was calculated using COG instead of Heading in some cases. Now fixed <<< No it wasn't!
* Easier plotter screen navigation (double-click to set center-screen location, "Find Ship" button to return to "centered on own ship" mode
* Easier (I hope) anchor-watch placement. At least more consistent with new screen navigation features.
* Center-screen lat/lon display, cursor position lat/lon/range/bearing display
* Auto-reconnect of serial and LAN connections (not Virtual ports, though)
* Optional scaling of AIS targets to reflect ship size and GPS location (see the "More Options" button on the AIS screen)
* Optional AIS target position extrapolation, based on target's last course and speed. (see the "More Options" button on the AIS screen)
* Indication of "aged" AIS targets (they fade to half-intensity at 3 minutes), and disappear at 10 minutes.
* Fixed the track display glitch. It was a math thing.
* Added "Own Ship" name and GPS location. (see "Options") Location entry is similar to position entry in an AIS system:
A = distance from bow, B = distance from stern, C = distance from port rail, D = distance from starboard rail. The units are in meters.

Rev 0.30 Changes: Added two more serial port interfaces, added "DPT" NMEA depth sentence. Minor change to debug display of NMEA sentences.
Rev 0.29 Changes: Fixed problem with serial port data display that was consuming huge amounts of CPU cycles. The problem exists in Rev 0.25 through Rev 0.28 but wasn't discovered until now.
Rev 0.28 Changes: Now decodes NMEA sentence "MWV" (windspeed and direction).
Rev 0.27 Changes:Added work-around code so parsing of NMEA numbers, which use a "." (period) for a decimal point, still works when the Windows system "Locale" is set to a region that expects "," (comma) as a decimal seperator. Had to change some display code as well, since some number formatting was broken by the comma thing.
Rev 0.26 Changes:Fixed bug in spreadsheet (.csv) log
Rev 0.25 Changes:Fixed bug in saving/restoring Virtual Port configuration options.
Rev 0.24 Changes:User Interface compatibility quick patch, removing the offending horizontal "fat bars"
Rev 0.23 Changes:User Interface improved (?)
Rev 0.22 Changes: Fixed port echo, fixed "VHW" heading decoding, serial port now accepts <CR> or <CRLF> line termination, timestamps on input data are stripped, added Anchor Watch, added "Own Vessel" track display.
Rev 0.21 Changes: Fixed serial port parity configuration error, fixed "close button" [X] hot-spot problem.
Rev 0.20 Changes: Even more improved "Spreadsheet Log" header, added "Local Time / GPS Time" autolog option. Configuration is now written to the default file when the program closes (as it should be).
Rev 0.19 Changes: Improved "Spreadsheet Log" header, program now (really!) wakes up monitor when in power-save mode.

Rev 0.18 Changes: Added "Spreadsheet Log" (see File/Logging), program now wakes up monitor when in power-save mode.
Rev 0.17 Changes: Bugfixes, now saves options properly
Rev 0.16 Changes: Bugfixes, Window pops up on alarm, added "Deep Water alarm" (click on Depth dial or Options/Depth Alarm to Set depth alarm)
Rev 0.15 Changes: Bugfixes, added "Invert RTS" control (see File/Serial Port)
Rev 0.14 Changes: Bugfixes, added Depth alarm (click on Depth dial or Options/Depth Alarm to Set depth alarm)
Rev 0.13 Changes: Fixed sluggish response when playing alarm sound, added MOB function (drive Port A CTS high to activate
Rev 0.12 Changes: Added water temperature/depth stripchart. I haven't yet completed the stripchart options storage, so selected scale values aren't preserved on shutdown.
Rev 0.11 Changes: Now correctly decodes AIS Class-B, fixed a bug in serial port operation, added "autolog" and "RMC priority" options. See "NavMonConfig.txt" for option configuration information.
Rev 0.10 Changes:Added virtual (serial) output ports, SOG filtering option, COG/SOG Stripchart, more Stripchart scale ranges, more options saved in config file, bug fixes.
Rev 0.7 Changes: More flexible AIS guard-zone configuration.
Rev 0.5 Changes: Improved File Playback.

 

 

Known Bugs

All Versions

  • Please note that your computer graphics adaptor must be set to 32-bit "color quality".
    Due to a bug in the graphics library used in NavMonPc, the charts and dials will not display if the color quality is set to 16-bit. You can change this setting in Windows Control Panel / Appearances and Themes / Change the Screen Resolution / Settings / Color Quality.

Release 0.46

 

Release 0.37 

  • NMEA "HDM" and "MWD" sentences data was being converted from Magnetic to True incorrectly.

Release 0.35 

  • NMEA WPL sentence waypoint lat/lon were not being used.

Release 0.34 

  • Bug was killing the chart displays and dials. This occured when trying to display data from NMEA sentence parameters that were "blank". The treatment of blank parameters which caused the display problem was changed in ver 0.34, and has been fixed in this release 0.35.

Release 0.33

  • Problems decoding some NMEA sentences
  • Waypoint dial broken (this started in rev 0.31)

Release 0.32

  • Still had a TWD bug. Fixed in rev 0.33

Release 0.31

  • Apparent Wind Angle not calculated correctly with some combinations of input data. Fixed in rev 0.32

Release 0.30

  • True Wind Direction was calculated using COG instead of Heading in some cases. Fixed in rev 0.31

Releases 0.25 through 0.28

  • Problem in serial port display that consumed huge numbers of CPU cycles, eventually causing the program to crash. This wasn't technically a bug, but the unanticipated behavior of a language feature: setting the background color of a "textbox" is apparently a big deal. Fixed in Rev 0.29.

Release 0.26

  • NMEA numeric data with decimal points is not parsed correctly when the computer is set for a locale that expects commas. Some displayed data is also bad in this case.
  • Still has occasional glitch in track display. It's a math thing, you probably wouldn't understand. Neither do I, apparently.

Release 0.25

  • Occasional glitch in track display. It's a math thing, you probably wouldn't understand. Neither do I, apparently.
  • Bug in .csv (spreadsheet) logfile. I had left in some debugging code that was generating once-a-second log entries.

Release 0.24

  • Virtual port settings not restored correctly from config file.

Release 0.23

  • Some of the screens show a fat white horizontal bar where there should be a one-pixel bar (only seen on one Vista computer so far).

Release 0.22

  • None (yet)

Release 0.21

  • PlayFile does not echo NMEA data over serial ports. (Fixed in ver 0.22)
  • Network (TCP/IP) input also does not echo NMEA data over serial ports. (Fixed in ver 0.22)
  • NMEA "VHW" sentence parser does not properly use Magnetic Variation (depending on the variation data sources). The heading value displayed may be wrong in either True or Magnetic mode. (Fixed in ver 0.22)
  • NMEA "HDG" sentence is decoded but not used.
  • Serial-port input requires <CRLF> NMEA sentence termination (per NMEA spec). Not really a bug, but I may allow just <CR> termination, if it doesn't break something else. (Fixed in ver 0.22)

Future Features
(under consideration)

  • Will strip off prepended timestamp or other data in the NMEA input string (trims anything before the first '$' or '!' character) (Added in Ver 0.22)
  • Own Vessel position history (Added in Ver 0.22)
  • Anchor watch (Added in Ver 0.22)
  • Alarm on loss of GPS input, "Alert" alarm sound, GPS status sceen
  • NMEA Input/Output, Log/Don't Log, Use/Ignore routing. Will be based on Port # (serial, network, file playback) and NMEA Sentence Type. Will have some sort of priority scheme.
  • Metric units option
  • Seatalk interface (requires some research)
  • Green and Red sectors on Wind dial
  • Decoding of DSC NMEA messages.
  • "Night Mode" for screen (color changes)
  • Interface to Garmin USB

Sample Files

  • PacCupStart.txt -- (1.9 MBytes) A NMEA log file (play this back to see the 2008 Pacific Cup start of VALIS, from the pre-start to the Golden Gate Bridge.)
  • PacCup08-Start.zip -- (313 KBytes) A zipped version of the file above.
  • NavMonConfig-VALIS.txt -- this Config file contains a waypoint for the Start-line buoy.
  • TTM.txt -- this NMEA file contains the Radar ARPA "TTM" Tracked Target Message. NavMonPc doesn't do anything (yet?) with this.