bool RMB::Parse( const SENTENCE& sentence ) { /* ** RMB - Recommended Minimum Navigation Information ** 14 ** 1 2 3 4 5 6 7 8 9 10 11 12 13| ** | | | | | | | | | | | | | | ** $--RMB,A,x.x,a,c--c,c--c,llll.ll,a,yyyyy.yy,a,x.x,x.x,x.x,A*hh<CR><LF> ** ** Field Number: ** 1) Status, V = Navigation receiver warning ** 2) Cross Track error - nautical miles ** 3) Direction to Steer, Left or Right ** 4) TO Waypoint ID ** 5) FROM Waypoint ID ** 6) Destination Waypoint Latitude ** 7) N or S ** 8) Destination Waypoint Longitude ** 9) E or W ** 10) Range to destination in nautical miles ** 11) Bearing to destination in degrees True ** 12) Destination closing velocity in knots ** 13) Arrival Status, A = Arrival Circle Entered ** 14) Checksum */ /* ** First we check the checksum... */ NMEA0183_BOOLEAN check = sentence.IsChecksumBad( 14 ); if ( check == NTrue ) { SetErrorMessage( _T("Invalid Checksum") ); return( FALSE ); } /* if ( check == Unknown0183 ) { SetErrorMessage( _T("Missing Checksum") ); return( FALSE ); } */ IsDataValid = sentence.Boolean( 1 ); CrossTrackError = sentence.Double( 2 ); DirectionToSteer = sentence.LeftOrRight( 3 ); From = sentence.Field( 4 ); To = sentence.Field( 5 ); DestinationPosition.Parse( 6, 7, 8, 9, sentence ); RangeToDestinationNauticalMiles = sentence.Double( 10 ); BearingToDestinationDegreesTrue = sentence.Double( 11 ); DestinationClosingVelocityKnots = sentence.Double( 12 ); IsArrivalCircleEntered = sentence.Boolean( 13 ); return( TRUE ); }
bool XTE::Parse( const SENTENCE& sentence ) { // ASSERT_VALID( this ); wxString field_data; /* ** XTE - Autopilot Sentence ** ** 1 2 3 4 5 6 ** | | | | | | ** $--XTE,A,A,x.x,a,N*hh<CR><LF> ** ** 1) Status ** V = LORAN-C Blink or SNR warning ** V = general warning flag or other navigation systems when a reliable ** fix is not available ** 2) Status ** V = Loran-C Cycle Lock warning flag ** A = OK or not used ** 3) Cross Track Error Magnitude ** 4) Direction to steer, L or R ** 5) Cross Track Units, N = Nautical Miles ** 6) Checksum */ /* ** First we check the checksum... */ NMEA0183_BOOLEAN check = sentence.IsChecksumBad( 15 ); if ( check == NTrue ) { SetErrorMessage( _T("Invalid Checksum") ); return( FALSE ); } /* ** Line has already been checked for checksum validity */ IsLoranBlinkOK = sentence.Boolean( 1 ); IsLoranCCycleLockOK = sentence.Boolean( 2 ); CrossTrackErrorDistance = sentence.Double( 3 ); DirectionToSteer = sentence.LeftOrRight( 4 ); CrossTrackUnits = sentence.Field( 5 ); return( TRUE ); }
bool VWR::Parse( const SENTENCE& sentence ) { // ASSERT_VALID( this ); /* ** MWV - Wind Speed and Angle ** ** 1 2 3 4 5 6 7 8 ** | | | | | | | | ** $--VWR,x.x,L,x.x,N,x.x,M,x.x,K,*hh<CR><LF> ** ** 1) Wind direction magnitude in degrees ** 2) Wind direction Left/Right of bow ** 3) Speed ** 4) N = Knots ** 5) Speed ** 6) M = Meters Per Second ** 7) Speed ** 8) K = Kilometers Per Hour ** 9) Checksum */ /* ** First we check the checksum... */ if ( sentence.IsChecksumBad( 9 ) == TRUE ) { SetErrorMessage( _T("Invalid Checksum") ); return( FALSE ); } WindDirectionMagnitude = sentence.Double( 1 ); DirectionOfWind = sentence.LeftOrRight( 2 ); WindSpeedKnots = sentence.Double( 3 ); WindSpeedms = sentence.Double( 5 ); WindSpeedKmh = sentence.Double( 7 ); return( TRUE ); }
bool APB::Parse( const SENTENCE& sentence ) { // ASSERT_VALID( this ); wxString field_data; /* ** APB - Autopilot Sentence "B" ** 13 15 ** 1 2 3 4 5 6 7 8 9 10 11 12| 14| ** | | | | | | | | | | | | | | | ** $--APB,A,A,x.x,a,N,A,A,x.x,a,c--c,x.x,a,x.x,a*hh<CR><LF> ** ** 1) Status ** V = LORAN-C Blink or SNR warning ** V = general warning flag or other navigation systems when a reliable ** fix is not available ** 2) Status ** V = Loran-C Cycle Lock warning flag ** A = OK or not used ** 3) Cross Track Error Magnitude ** 4) Direction to steer, L or R ** 5) Cross Track Units, N = Nautical Miles ** 6) Status ** A = Arrival Circle Entered ** 7) Status ** A = Perpendicular passed at waypoint ** 8) Bearing origin to destination ** 9) M = Magnetic, T = True ** 10) Destination Waypoint ID ** 11) Bearing, present position to Destination ** 12) M = Magnetic, T = True ** 13) Heading to steer to destination waypoint ** 14) M = Magnetic, T = True ** 15) Checksum */ /* ** First we check the checksum... */ NMEA0183_BOOLEAN check = sentence.IsChecksumBad( 15 ); if ( check == NTrue ) { SetErrorMessage( _T("Invalid Checksum") ); return( FALSE ); } /* ** Line has already been checked for checksum validity */ IsLoranBlinkOK = sentence.Boolean( 1 ); IsLoranCCycleLockOK = sentence.Boolean( 2 ); CrossTrackErrorMagnitude = sentence.Double( 3 ); DirectionToSteer = sentence.LeftOrRight( 4 ); CrossTrackUnits = sentence.Field( 5 ); IsArrivalCircleEntered = sentence.Boolean( 6 ); IsPerpendicular = sentence.Boolean( 7 ); BearingOriginToDestination = sentence.Double( 8 ); BearingOriginToDestinationUnits = sentence.Field( 9 ); To = sentence.Field( 10 ); BearingPresentPositionToDestination = sentence.Double( 11 ); BearingPresentPositionToDestinationUnits = sentence.Field( 12 ); HeadingToSteer = sentence.Double( 13 ); HeadingToSteerUnits = sentence.Field( 14 ); return( TRUE ); }