Using the parser to decode a serial data string

Triton SB-Logger and TritonNav incorporate a parser which enables decoding of almost any ASCII data being sent to the programs from a third party device over a standard serial (COM) port. For example a navigation computer may send the information from a number of different sensors in one string (position, heading, speed, pitch, roll etc.). The data string can use delimiters (commas, spaces) to seperate the variables or be in fixed length (character count) format. The parser can handle either. It could also be used to decode NMEA 0183 strings that are not handled automatically by the NMEA0183 option.

Click on the Setup Serial Input to display the following dialog box:

Select the Com port you will be using, choose the User Defined Input system type, and then click on the User Defined Tab:

Click the Modify button:

Enter the actual string as text in the SAMPLE & TEST STRING box as indicated.  Include all separators and non-numeric characters that may appear in the sample string. Non-numeric characters are used as delimiters, (multiple non-numerics are treated as one),  you will also need to add <CR><LF> at the end of your string and specify <CR><LF> as a delimiter, be sure to specify any other non-numeric characters from the original string also.   Here is a string as is would appear in Windows Notepad:

You can use the Copy / Paste functions (CTRL+C and CTRL +V) of Windows to copy a line from Notepad and paste it into the Parser. Here’s the first line of the nav text file entered in the parser. Note the addition of <CR><LF>

Right Clicking in the lower panel allows the addition of a new field:

Initially the Format column shows VOID (delimited):

A left click will enable display of the Format dropdown showing a table of available options:

In this example the first group of characters to be parsed is a generic NUMBER (delimited) and this number is to have an Assignment of FIX (integer):

Continue adding fields, selecting the correct Format from the dropdown list, (see seperate list for definitions)

In this example the Format of the Latitude and Longitude is DD.DDDDDD or degrees and decimal degrees, this format could also be applied to other angular values so it is necessary to Assign the value to either LAT or LONG:

Once all values have been assigned, the PARSER DECSRIPTION & TEST REPORT should be complete and error free, indicating that the saved .PRS file will correctly decode the string. Note, in the example the value for speed is KNOTS, the parser processes this value to meters/Second internally, the speed being stored in the file as Meters/second:

Clicking the Save button saves all settings to a .PRS file. Exiting will return you to the Serial port data acquisition settings dialog box:

Checking the indicated box will synchronize the time on the PC clock to be the same as the time in the decoded string. The next time this string is encountered it will only be necessary to recall the appropriate .PRS file.

Example of the settings used to decode a NMEA type string

Here is an example of a NMEA type string and its decode settings, (usually not required since NMEA0183 is automatically decoded by specifiying NMEA0183 as the Nav type)

Notes

Using the PATTERN option and assigning it as $PNTL speeds the parsing of this type of string

Explanation of the LAT/LONG Format LAT/LON(d#m*?h?) in this example:

d = whole degrees (in this case 076)

# = number of characters defining degrees (in the case of Longitude 3 characters)

m* = minutes, with any number of decimal places (in this case 37.04656465)

? = any delimiter (in this case a comma)

h = The hemisphere, E-W or N-S (in this case W).

? = any delimiter (in this case a comma)

The result in Deg.Decimal is decoded correctly as -76.617442 in the Value column. Because E was specified as being necessary to give a + Longitude (the last parameter specified for Field 07), the parsed W in the original string gives the correct negative Longitude value.