⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sentence.cpp

📁 提取各种NEMA0183格式数据的类编程。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      temp_number[ 2 ] = 0x00;

      temp_number[ 0 ] = temp_string[ 0 ];
      temp_number[ 1 ] = temp_string[ 1 ];

      int hours = ::_ttoi( temp_number );

      temp_number[ 0 ] = temp_string[ 2 ];
      temp_number[ 1 ] = temp_string[ 3 ];

      int minutes = ::_ttoi( temp_number );

      temp_number[ 0 ] = temp_string[ 4 ];
      temp_number[ 1 ] = temp_string[ 5 ];

      int seconds = ::_ttoi( temp_number );

      int year  = return_value.GetYear();
      int month = return_value.GetMonth();
      int day   = return_value.GetDay();

      return_value = CTime( year, month, day, hours, minutes, seconds );
   }

   return( return_value );
}

TRANSDUCER_TYPE SENTENCE::TransducerType( int field_number ) const
{
   CString field_data;

   field_data = Field( field_number );

   if ( field_data == TEXT( "A" ) )
   {		 
      return( AngularDisplacementTransducer );
   }
   else if ( field_data == TEXT( "D" ) )
   {
      return( LinearDisplacementTransducer );
   }
   else if ( field_data == TEXT( "C" ) )
   {
      return( TemperatureTransducer );
   }
   else if ( field_data == TEXT( "F" ) )
   {
      return( FrequencyTransducer );
   }
   else if ( field_data == TEXT( "N" ) )
   {
      return( ForceTransducer );
   }
   else if ( field_data == TEXT( "P" ) )
   {
      return( PressureTransducer );
   }
   else if ( field_data == TEXT( "R" ) )
   {
      return( FlowRateTransducer );
   }
   else if ( field_data == TEXT( "T" ) )
   {
      return( TachometerTransducer );
   }
   else if ( field_data == TEXT( "H" ) )
   {
      return( HumidityTransducer );
   }
   else if ( field_data == TEXT( "V" ) )
   {
      return( VolumeTransducer );
   }
   else
   {
      return( TransducerUnknown );
   }
}

FAA_MODE_INDICATOR SENTENCE::FAAMode( int field_number ) const
{
   CString field_data;

   field_data = Field( field_number );

   if ( field_data == TEXT( "A" ) )
   {		 
      return( Autonomous );
   }
   else if ( field_data == TEXT( "D" ) )
   {
      return( Differential );
   }
   else if ( field_data == TEXT( "E" ) )
   {
      return( Estimated );
   }
   else if ( field_data == TEXT( "M" ) )
   {
      return( Manual );
   }
   else if ( field_data == TEXT( "S" ) )
   {
      return( Simulated );
   }
   else if ( field_data == TEXT( "N" ) )
   {
      return( NotValid );
   }
   else if ( field_data == TEXT( "V" ) )
   {
      return( Invalid );
   }
   else
   {
      return( FAAModeUnknown );
   }
}

/*
** Operators
*/

SENTENCE::operator CString() const
{
   return( Sentence );
}

const SENTENCE& SENTENCE::operator = ( const SENTENCE& source )
{
   Sentence = source.Sentence;

   return( *this );
}

const SENTENCE& SENTENCE::operator = ( const CString& source )
{
   Sentence = source;

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( const CString& source )
{
   Sentence += ",";
   Sentence += source;

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( double value )
{
   CString temp_string;

   temp_string.Format( TEXT( "%.3f" ), value );

   Sentence += TEXT( "," );
   Sentence += temp_string;

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( COMMUNICATIONS_MODE mode )
{
   Sentence += TEXT( "," );

   switch( mode )
   {
      case F3E_G3E_SimplexTelephone:

	      Sentence += TEXT( "d" );
		   break;

      case F3E_G3E_DuplexTelephone:

	      Sentence += TEXT( "e" );
		   break;

      case J3E_Telephone:

	      Sentence += TEXT( "m" );
		   break;

      case H3E_Telephone:

	      Sentence += TEXT( "o" );
		   break;

      case F1B_J2B_FEC_NBDP_TelexTeleprinter:

	      Sentence += TEXT( "q" );
		   break;

      case F1B_J2B_ARQ_NBDP_TelexTeleprinter:

	      Sentence += TEXT( "s" );
		   break;

      case F1B_J2B_ReceiveOnlyTeleprinterDSC:

	      Sentence += TEXT( "w" );
		   break;

      case A1A_MorseTapeRecorder:

	      Sentence += TEXT( "x" );
		   break;

      case A1A_MorseKeyHeadset:

	      Sentence += TEXT( "{" );
		   break;

      case F1C_F2C_F3C_FaxMachine:

	      Sentence += TEXT( "|" );
		   break;
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( TRANSDUCER_TYPE transducer )
{
   Sentence += TEXT( "," );

   switch( transducer )
   {
      case TemperatureTransducer:

	      Sentence += TEXT( "C" );
		   break;

      case AngularDisplacementTransducer:

	      Sentence += TEXT( "A" );
		   break;

      case LinearDisplacementTransducer:

	      Sentence += TEXT( "D" );
		   break;

      case FrequencyTransducer:

	      Sentence += TEXT( "F" );
		   break;

      case ForceTransducer:

	      Sentence += TEXT( "N" );
		   break;

      case PressureTransducer:

	      Sentence += TEXT( "P" );
		   break;

      case FlowRateTransducer:

	      Sentence += TEXT( "R" );
		   break;

      case TachometerTransducer:

	      Sentence += TEXT( "T" );
		   break;

      case HumidityTransducer:

	      Sentence += TEXT( "H" );
		   break;

      case VolumeTransducer:

	      Sentence += TEXT( "V" );
		   break;
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( FAA_MODE_INDICATOR faa_mode_indicator )
{
   Sentence += TEXT( "," );

   switch( faa_mode_indicator )
   {
      case Autonomous:

	      Sentence += TEXT( "A" );
		   break;

      case Differential:

	      Sentence += TEXT( "D" );
		   break;

      case Estimated:

	      Sentence += TEXT( "E" );
		   break;

      case Manual:

	      Sentence += TEXT( "M" );
		   break;

      case Simulated:

	      Sentence += TEXT( "S" );
		   break;

      case NotValid:

	      Sentence += TEXT( "N" );
		   break;

      case Invalid:

	      Sentence += TEXT( "V" );
		   break;
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( NORTHSOUTH northing )
{
   Sentence += TEXT( "," );

   if ( northing == North )
   {
      Sentence += TEXT( "N" );
   }
   else if ( northing == South )
   {
      Sentence += TEXT( "S" );
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( int value )
{
   CString temp_string;

   temp_string.Format( TEXT( "%d" ), value );

   Sentence += TEXT( "," );
   Sentence += temp_string;

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( EASTWEST easting )
{
   Sentence += TEXT( "," );

   if ( easting == East )
   {
      Sentence += TEXT( "E" );
   }
   else if ( easting == West )
   {
      Sentence += TEXT( "W" );
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( NMEA0183_BOOLEAN boolean )
{
   Sentence += TEXT( "," );

   if ( boolean == True )
   {
      Sentence += TEXT( "A" );
   }
   else if ( boolean == False )
   {
      Sentence += TEXT( "V" );
   }

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( LATLONG& source )
{
   source.Write( *this );

   return( *this );
}

const SENTENCE& SENTENCE::operator += ( const CTime time )
{
   CString temp_string = time.Format( TEXT( "%H%M%S" ) );

   Sentence += TEXT( "," );
   Sentence += temp_string;

   return( *this );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -