亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nmea0183.cpp

?? nmea0183識別程序
?? CPP
字號:
#include "nmea0183.h"
#pragma hdrstop

/*
** Author: Samuel R. Blackburn
** CI$: 76300,326
** Internet: sammy@sed.csc.com
**
** You can use it any way you like.
*/

IMPLEMENT_DYNAMIC( NMEA0183, CObject )

NMEA0183::NMEA0183()
{
   initialize();

   response_table.Add( (RESPONSE *) &Aam );
   response_table.Add( (RESPONSE *) &Alm );
   response_table.Add( (RESPONSE *) &Apb );
   response_table.Add( (RESPONSE *) &Asd );
   response_table.Add( (RESPONSE *) &Bec );
   response_table.Add( (RESPONSE *) &Bod );
   response_table.Add( (RESPONSE *) &Bwc );
   response_table.Add( (RESPONSE *) &Bwr );
   response_table.Add( (RESPONSE *) &Bww );
   response_table.Add( (RESPONSE *) &Dbt );
   response_table.Add( (RESPONSE *) &Dcn );
   response_table.Add( (RESPONSE *) &Dpt );
   response_table.Add( (RESPONSE *) &Fsi );
   response_table.Add( (RESPONSE *) &Gga );
   response_table.Add( (RESPONSE *) &Glc );
   response_table.Add( (RESPONSE *) &Gll );
   response_table.Add( (RESPONSE *) &Gxa );
   response_table.Add( (RESPONSE *) &Hdg );
   response_table.Add( (RESPONSE *) &Hdt );
   response_table.Add( (RESPONSE *) &Hsc );
   response_table.Add( (RESPONSE *) &Lcd );
   response_table.Add( (RESPONSE *) &Mtw );
   response_table.Add( (RESPONSE *) &Mwv );
   response_table.Add( (RESPONSE *) &Oln );
   response_table.Add( (RESPONSE *) &Osd );
   response_table.Add( (RESPONSE *) &Proprietary );
   response_table.Add( (RESPONSE *) &Rma );
   response_table.Add( (RESPONSE *) &Rmb );
   response_table.Add( (RESPONSE *) &Rmc );
   response_table.Add( (RESPONSE *) &Rot );
   response_table.Add( (RESPONSE *) &Rpm );
   response_table.Add( (RESPONSE *) &Rsa );
   response_table.Add( (RESPONSE *) &Rsd );
   response_table.Add( (RESPONSE *) &Rte );
   response_table.Add( (RESPONSE *) &Sfi );
   response_table.Add( (RESPONSE *) &Stn );
   response_table.Add( (RESPONSE *) &Trf );
   response_table.Add( (RESPONSE *) &Ttm );
   response_table.Add( (RESPONSE *) &Vbw );
   response_table.Add( (RESPONSE *) &Vhw );
   response_table.Add( (RESPONSE *) &Vdr );
   response_table.Add( (RESPONSE *) &Vlw );
   response_table.Add( (RESPONSE *) &Vpw );
   response_table.Add( (RESPONSE *) &Vtg );
   response_table.Add( (RESPONSE *) &Wcv );
   response_table.Add( (RESPONSE *) &Wnc );
   response_table.Add( (RESPONSE *) &Wpl );
   response_table.Add( (RESPONSE *) &Xdr );
   response_table.Add( (RESPONSE *) &Xte );
   response_table.Add( (RESPONSE *) &Xtr );
   response_table.Add( (RESPONSE *) &Zda );
   response_table.Add( (RESPONSE *) &Zfo );
   response_table.Add( (RESPONSE *) &Ztg );

   sort_response_table();
   set_container_pointers();
}

NMEA0183::~NMEA0183()
{
   initialize();
}

void NMEA0183::initialize( void )
{
   ASSERT_VALID( this );

   ErrorMessage.Empty();
}

void NMEA0183::set_container_pointers( void )
{
   ASSERT_VALID( this );

   int index = 0;
   int number_of_entries_in_table = response_table.GetSize();

   RESPONSE *this_response = (RESPONSE *) NULL;

   index = 0;

   while( index < number_of_entries_in_table )
   {
      this_response = (RESPONSE *) response_table[ index ];

      this_response->SetContainer( this );

      index++;
   }
}

void NMEA0183::sort_response_table( void )
{
   ASSERT_VALID( this );

   int index = 0;
   int number_of_entries_in_table = response_table.GetSize() - 1;

   RESPONSE *this_response = (RESPONSE *) NULL;
   RESPONSE *that_response = (RESPONSE *) NULL;

   BOOL sorted = FALSE;

   while( sorted == FALSE )
   {
      sorted = TRUE;

      index = 0;

      while( index < number_of_entries_in_table )
      {
         this_response = (RESPONSE *) response_table[ index     ];
         that_response = (RESPONSE *) response_table[ index + 1 ];

         if ( this_response->Mnemonic.Compare( that_response->Mnemonic ) > 0 )
         {
            response_table[ index     ] = that_response;
            response_table[ index + 1 ] = this_response;

            sorted = FALSE;
         }

         index++;
      }
   }
}

/*
** Public Interface
*/

BOOL NMEA0183::IsGood( void ) const
{
   ASSERT_VALID( this );

   /*
   ** NMEA 0183 sentences begin with $ and and with CR LF
   */

   if ( sentence.Sentence[ 0 ] != '$' )
   {
      return( FALSE );
   }

   /*
   ** Next to last character must be a CR
   */

   if ( sentence.Sentence.Mid( sentence.Sentence.GetLength() - 2, 1 ) != CARRIAGE_RETURN )
   {
      return( FALSE );
   }

   if ( sentence.Sentence.Right( 1 ) != LINE_FEED )
   {
      return( FALSE );
   }

   return( TRUE );
}

BOOL NMEA0183::Parse( void )
{
   ASSERT_VALID( this );

   BOOL return_value = FALSE;

   if ( IsGood() )
   {
      int index       = 0;
      int comparison  = 0;
      int drop_dead   = 0;
      int exit_loop   = 0;
      int lower_limit = 0;
      int upper_limit = 0;

      CString mnemonic;

      RESPONSE *response_p = (RESPONSE *) NULL;

      mnemonic = sentence.Field( 0 );

      /*
      ** See if this is a proprietary field
      */

      if ( mnemonic.Left( 1 ) == 'P' )
      {
         mnemonic = "P";
      }
      else
      {
         mnemonic = mnemonic.Right( 3 );
      }

      /*
      ** Set up our default error message
      */

      ErrorMessage = mnemonic;
      ErrorMessage += " is an unknown type of sentence";

      LastSentenceIDReceived = mnemonic;

      /*
      ** Do a Binary Search to call the appropriate function
      */

      lower_limit = 0;
      upper_limit = response_table.GetSize();
      index       = upper_limit / 2;
      drop_dead   = ( index < 10 ) ? 10 : index + 2;

      /*
      ** The drop_dead is here as an insurance policy that we will never get stuck in an endless loop.
      ** I have encountered situations where the inaccuracy of the division leaves the loop stuck when
      ** it can't find something.
      */

      while( exit_loop == 0 )
      {
         response_p = (RESPONSE *) response_table[ index ];

         comparison = mnemonic.Compare( response_p->Mnemonic );

         if ( comparison == 0 )
         {
            return_value = response_p->Parse( sentence );

            /*
            ** Set your ErrorMessage
            */

            if ( return_value == TRUE )
            {
               ErrorMessage = "No Error";
               LastSentenceIDParsed = response_p->Mnemonic;
               TalkerID = talker_id( sentence );
               ExpandedTalkerID = expand_talker_id( TalkerID );
            }
            else
            {
               ErrorMessage = response_p->ErrorMessage;
            }

            exit_loop = 1;
         }
         else
         {
            if ( comparison < 0 )
            {
               upper_limit = index;
            }
            else
            {
               lower_limit = index;
            }

            if ( lower_limit == upper_limit )
            {
               exit_loop = 1;
               return_value = FALSE;
            }
            else
            {
               index = ( lower_limit + upper_limit ) / 2;
            }
         }

         drop_dead--;

         if ( drop_dead < 0 )
         {
            exit_loop = 1;
            return_value = FALSE;
         }
      }
   }
   else
   {
      return_value = FALSE;
   }

   return( return_value );
}

NMEA0183& NMEA0183::operator << ( const char *source )
{
   ASSERT_VALID( this );

   sentence = source;

   return( *this );
}

NMEA0183& NMEA0183::operator >> ( CString& destination )
{
   ASSERT_VALID( this );

   destination = sentence;

   return( *this );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂在线亚洲视频| 91久久精品一区二区| av电影在线不卡| 日韩一级完整毛片| 亚洲一级二级三级| 国产a区久久久| 日韩欧美成人激情| 亚洲国产乱码最新视频| 高清视频一区二区| 日韩精品中午字幕| 亚洲成av人片观看| 91论坛在线播放| 亚洲国产精华液网站w| 久久国产人妖系列| 欧美日韩一区三区| 亚洲乱码国产乱码精品精可以看| 国产美女主播视频一区| 日韩欧美国产1| 麻豆精品国产91久久久久久| 在线观看不卡一区| 最新欧美精品一区二区三区| 国产99久久精品| 欧美韩国一区二区| 国产激情一区二区三区| 欧美tickling网站挠脚心| 日本在线播放一区二区三区| 欧美日韩午夜在线| 午夜精品一区二区三区三上悠亚| 欧美在线你懂的| 一区二区成人在线| 色婷婷国产精品综合在线观看| 国产精品免费视频一区| 成人网在线免费视频| 欧美国产97人人爽人人喊| 国产精品77777| 国产精品人妖ts系列视频| 成人免费观看视频| 亚洲欧美区自拍先锋| 欧美在线观看禁18| 五月天久久比比资源色| 在线综合+亚洲+欧美中文字幕| 日韩成人午夜电影| www国产成人免费观看视频 深夜成人网| 青青草伊人久久| 久久亚洲影视婷婷| 成人国产亚洲欧美成人综合网| 国产精品国产自产拍高清av王其| 91女厕偷拍女厕偷拍高清| 亚洲国产一区二区三区| 91麻豆精品91久久久久久清纯| 秋霞电影一区二区| 国产视频亚洲色图| 色av成人天堂桃色av| 蜜桃一区二区三区在线观看| 精品国产伦一区二区三区免费 | 亚洲国产日韩a在线播放| 欧美三级日本三级少妇99| 日韩福利视频导航| 欧美高清在线视频| 欧美午夜片在线看| 久久国产尿小便嘘嘘尿| 日韩美女视频一区| 日韩一级片网址| 成人高清在线视频| 午夜欧美电影在线观看| 国产夜色精品一区二区av| 色婷婷香蕉在线一区二区| 久久se精品一区二区| 亚洲同性同志一二三专区| 欧美一区二区三区免费视频| 丁香天五香天堂综合| 亚洲成精国产精品女| 国产亚洲人成网站| 欧美色大人视频| 国产成人午夜精品5599| 亚洲福利视频导航| 中文字幕中文字幕在线一区 | 国产精品一级在线| 午夜a成v人精品| 中文字幕精品一区| 欧美一级高清大全免费观看| 成人免费毛片aaaaa**| 美女任你摸久久| 亚洲午夜久久久| 亚洲女人****多毛耸耸8| 久久婷婷综合激情| 日韩午夜在线影院| 欧美系列亚洲系列| 95精品视频在线| 成人av在线影院| 国产美女娇喘av呻吟久久| 日韩高清在线电影| 亚洲综合免费观看高清在线观看| 欧美国产日本韩| 久久精品亚洲精品国产欧美| 欧美日韩黄色一区二区| 在线免费观看成人短视频| 成人av网站在线观看| 国产乱人伦精品一区二区在线观看| 天天综合网 天天综合色| 亚洲综合一区在线| 亚洲色图一区二区| 亚洲欧洲国产日本综合| 亚洲国产精品精华液ab| 久久亚洲私人国产精品va媚药| 日韩欧美国产综合一区| 欧美大片在线观看一区二区| 欧美人动与zoxxxx乱| 欧美私人免费视频| 欧美午夜一区二区三区| 欧美性感一类影片在线播放| 欧洲亚洲精品在线| 在线一区二区三区| 欧美中文字幕亚洲一区二区va在线 | 国产福利不卡视频| 国产另类ts人妖一区二区| 国产精品乡下勾搭老头1| 国产在线国偷精品免费看| 国产一区二区看久久| 国产大陆精品国产| av在线播放成人| 在线精品视频免费观看| 欧美性做爰猛烈叫床潮| 欧美精选在线播放| 日韩欧美第一区| 国产三级精品三级| 国产精品日韩成人| 亚洲激情图片一区| 日韩精品高清不卡| 国产美女精品在线| 99国产欧美久久久精品| 欧美日韩一区三区四区| 日韩精品一区二区三区四区| 国产午夜精品一区二区三区四区 | 国产.欧美.日韩| 成人97人人超碰人人99| 日本道色综合久久| 7777精品伊人久久久大香线蕉最新版| 日韩欧美精品在线| 国产精品电影院| 三级影片在线观看欧美日韩一区二区 | 91啦中文在线观看| 欧美精品久久久久久久多人混战 | 欧美一区二区三区喷汁尤物| 26uuu色噜噜精品一区二区| 国产精品区一区二区三| 亚洲国产日韩在线一区模特| 精品一区二区三区久久久| 北岛玲一区二区三区四区| 欧美三级日韩在线| 亚洲国产高清在线观看视频| 亚洲国产美女搞黄色| 国产激情一区二区三区| 欧美视频中文一区二区三区在线观看| 欧美一级片免费看| 中文字幕日韩av资源站| 奇米色一区二区三区四区| 成人免费视频一区二区| 7777精品久久久大香线蕉| 国产精品每日更新在线播放网址| 亚洲1区2区3区4区| 成人免费毛片app| 日韩精品中文字幕一区二区三区| 亚洲视频一区在线| 国产乱码精品1区2区3区| 欧美性大战久久久久久久| 中文字幕免费观看一区| 日本三级韩国三级欧美三级| 成人福利电影精品一区二区在线观看| 欧美一区二区性放荡片| 一区二区欧美在线观看| 成人福利视频网站| 久久精品男人的天堂| 日本成人在线网站| 欧美影视一区在线| 亚洲欧洲在线观看av| 国产久卡久卡久卡久卡视频精品| 欧美高清视频在线高清观看mv色露露十八 | 欧美精品一区二区久久婷婷| 亚洲一级二级三级在线免费观看| 成人高清免费观看| 欧美激情一区二区三区蜜桃视频| 久久av中文字幕片| 日韩一区二区中文字幕| 一区二区三区美女视频| 91同城在线观看| 国产精品免费久久| 国产91丝袜在线18| 国产欧美一区二区三区在线老狼| 久久成人精品无人区| 日韩欧美的一区二区| 日韩成人免费在线| 日韩欧美123| 久久超碰97人人做人人爱| 欧美xxx久久| 精品写真视频在线观看| 精品区一区二区| 久久99精品一区二区三区三区| 在线不卡免费欧美| 美女视频免费一区|