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

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

?? display.cpp

?? 基于USB接口的GPS應用程序
?? CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <time.h>
//
#pragma hdrstop

#include "InitForm.h"
#include "display.h"
#include "Gpsnav.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------
/*
 *  create usb gps interface object
 *  create update screen thread
 *  init global event object
 */
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 int initresult;

 ch_allocate_manually = false;  // use almanac file to allocate chn
 //init prn settings
 for(int i=0; i< CH_NUM; i++)
  prn[i] = 0;

 llh[0]=llh[1]=llh[2] = 0.;


 CfgFileHandle = fopen("system.cfg","r");
 if( CfgFileHandle == NULL) // no config file
 {
   ;// should add some err handle coce here
 }
 else
 {
  read_cfg(CfgFileHandle);
 }

 for(int i =0; i< CH_NUM; i++){
  channel[i] = ListView1->Items->Add();
  channel[i]->Caption = IntToStr(i);
  for(int j=0; j<ITEM_NUM; j++)
   channel[i]->SubItems->Add(IntToStr(0));
 }

 for(int i=0; i< CH_NUM; i++){
  ch_result[i] = ResultListView->Items->Add();
  ch_result[i]->Caption = IntToStr(i);
  for(int j=0; j<RESULT_NUM; j++)
   ch_result[i]->SubItems->Add(" ");
 }


 Gpsfunc = new GPS_Func;

 handleopened = true;
 GpsInterface = new IoInterface;
 if(GpsInterface == NULL)
 {
        Application->MessageBoxA("Failed to create an interface object", "Error", MB_OKCANCEL);
        handleopened = false;
        exit(0);
 }
 else if(!GpsInterface->IsHandleOpened())
 {
        Application->MessageBoxA("Failed to open the USB-GPS interface", "Error", MB_OKCANCEL);
        handleopened = false;
        exit(0);
 }
 else
 {
  initresult= GpsInterface->InitProc();

  if(initresult)
   Application->MessageBoxA(IOINTERFACE_MSG[initresult],"Error", MB_OKCANCEL);
 }

 // create a sampling thread and update screen thread
 // also need to create two event for synchronization

 newdataEvent = CreateEvent(NULL,false,false,NULL);
 gpsEvent = CreateEvent(NULL, false, false, NULL);
 dispEvent = CreateEvent(NULL,false, false, NULL);

 InitializeCriticalSection(&GpsCriticalSection);


 if(handleopened)
 {
  Gpsnav = new GPS_Nav(GpsInterface);

  if(!ch_allocate_manually) // using almanac file to set prn
  {
   TInitializeForm *  InitPrnForm = new TInitializeForm(this);
   InitPrnForm->ShowModal();
   delete InitPrnForm;
  }
  //else  // set prn by system.cfg file
  Gpsnav->SetPrn(prn);

  initresult = Gpsnav->InitProc();
  if(initresult)
   Application->MessageBoxA(GPS_NAV_MSG[initresult],"Error", MB_OKCANCEL);
  Gpsnav->PrintDbgInfo(" Log information for GPS_Nav class ");
 }
 else
  Gpsnav = NULL;
}
//---------------------------------------------------------------------------
/*
 *  delete usb gps interface object
 *  delete update screen thread
 *  delete global event object
 */
__fastcall TForm1::~TForm1()
{
 CloseHandle(newdataEvent);
 CloseHandle(gpsEvent);
 CloseHandle(dispEvent);
 DeleteCriticalSection(&GpsCriticalSection);
}
//---------------------------------------------------------------------------

void TForm1::setprn(FILE* AlmFile, struct tm* gt)
{
 Gpsfunc->CalcPrnSetting(prn,gt,AlmFile,llh);
}

//---------------------------------------------------------------------------
void TForm1::update_channel(unsigned char idx, unsigned short *newdata)
{
 for(int i =0; i< ITEM_NUM; i++)
  channel[idx]->SubItems->Strings[i] = IntToHex((int)newdata[i],4);
}
//---------------------------------------------------------------------------
void TForm1::update_allchannel( PT_allch_rawdata_disp rawdata_pt)
{
 for( int i=0; i< CH_NUM; i++){
  channel[i]->SubItems->Strings[0] = IntToStr((int)rawdata_pt->allch_rawdata[i].prn_num);
  channel[i]->SubItems->Strings[1] = IntToStr((int)rawdata_pt->allch_rawdata[i].code_slew);
  channel[i]->SubItems->Strings[2] = IntToStr((int)rawdata_pt->allch_rawdata[i].code_phase);
  channel[i]->SubItems->Strings[3] = IntToHex((int)rawdata_pt->allch_rawdata[i].carrier_cycle_high,4);
  channel[i]->SubItems->Strings[4] = IntToHex((int)rawdata_pt->allch_rawdata[i].carrier_cycle_low,4);
  channel[i]->SubItems->Strings[5] = IntToHex((int)rawdata_pt->allch_rawdata[i].carrier_dco_phase,4);
  channel[i]->SubItems->Strings[6] = IntToHex((int)rawdata_pt->allch_rawdata[i].code_dco_phase,4);
  channel[i]->SubItems->Strings[7] = IntToHex((int)rawdata_pt->allch_rawdata[i].epoch,4);
  channel[i]->SubItems->Strings[8] = IntToStr((int)rawdata_pt->allch_rawdata[i].i_track);
  channel[i]->SubItems->Strings[9] = IntToStr((int)rawdata_pt->allch_rawdata[i].q_track);
  channel[i]->SubItems->Strings[10] = IntToStr((int)rawdata_pt->allch_rawdata[i].i_prompt);
  channel[i]->SubItems->Strings[11] = IntToStr((int)rawdata_pt->allch_rawdata[i].q_prompt);
  channel[i]->SubItems->Strings[12] = IntToStr((int)rawdata_pt->allch_rawdata[i].freq_off);
 }
}
void TForm1::update_trkloop(PT_channel_disp chdisp)
{
 double signo,log_signo;
  for(int i=0; i<CH_NUM; i++){
  signo = (chdisp+i)->SigNoise/(15.*1395.);
  if( signo >0)
   log_signo = 10*log10(signo*signo*25.*1.7777);
  else
   log_signo = 0.;

  ch_result[i]->Caption = IntToStr((chdisp+i)->prn_num);

  ch_result[i]->SubItems->Strings[0] = AnsiString(STATE_MSG[(chdisp+i)->state_info]);
  ch_result[i]->SubItems->Strings[1] = FloatToStrF((chdisp+i)->freq_off, ffGeneral,5,9)+ "Hz";
  ch_result[i]->SubItems->Strings[2] = FloatToStrF(log_signo, ffGeneral,3,5)+"dB";
  ch_result[i]->SubItems->Strings[3] = "SubFrm " + IntToStr( (chdisp+i)->frm_idx);
  ch_result[i]->SubItems->Strings[4] = IntToHex((chdisp+i)->tow, 5);
  ch_result[i]->SubItems->Strings[5] = IntToHex((chdisp+i)->tlm, 4);
  ch_result[i]->SubItems->Strings[6] = FloatToStrF((chdisp+i)->pseudorange, ffGeneral, 10,10);
  ch_result[i]->SubItems->Strings[7] = FloatToStrF((chdisp+i)->ele, ffGeneral, 5,5);
  ch_result[i]->SubItems->Strings[8] = FloatToStrF((chdisp+i)->azi, ffGeneral, 5,5);
 }
}

void TForm1::update_navresult(PT_navinfo_disp navinfo_pt)
{
 if( navinfo_pt->NEDpos[2] > -1000. && navinfo_pt->NEDpos[2]<10000. ) // fast check reasonablity
 {
  NED_P_LatEdit->Font->Color = clGreen;
  NED_P_LongEdit->Font->Color = clGreen;
  NED_P_HighEdit->Font->Color = clGreen;

  ECEF_P_XEdit->Font->Color = clGreen;
  ECEF_P_YEdit->Font->Color = clGreen;
  ECEF_P_ZEdit->Font->Color = clGreen;

  ECEF_V_XEdit->Font->Color = clGreen;
  ECEF_V_YEdit->Font->Color = clGreen;
  ECEF_V_ZEdit->Font->Color = clGreen;
 }
 else
 {
  NED_P_LatEdit->Font->Color = clRed;
  NED_P_LongEdit->Font->Color = clRed;
  NED_P_HighEdit->Font->Color = clRed;

  ECEF_P_XEdit->Font->Color = clRed;
  ECEF_P_YEdit->Font->Color = clRed;
  ECEF_P_ZEdit->Font->Color = clRed;

  ECEF_V_XEdit->Font->Color = clRed;
  ECEF_V_YEdit->Font->Color = clRed;
  ECEF_V_ZEdit->Font->Color = clRed;

 }
 NED_P_LatEdit->Text = FloatToStrF( navinfo_pt->NEDpos[0], ffGeneral, 8,9);
 NED_P_LongEdit->Text = FloatToStrF( navinfo_pt->NEDpos[1], ffGeneral, 8,9);
 NED_P_HighEdit->Text = FloatToStrF( navinfo_pt->NEDpos[2], ffGeneral, 8,9);

 ECEF_P_XEdit->Text = FloatToStrF( navinfo_pt->ECEFpos[0], ffGeneral, 9,9);
 ECEF_P_YEdit->Text = FloatToStrF( navinfo_pt->ECEFpos[1], ffGeneral, 9,9);
 ECEF_P_ZEdit->Text = FloatToStrF( navinfo_pt->ECEFpos[2], ffGeneral, 9,9);

 ECEF_V_XEdit->Text = FloatToStrF( navinfo_pt->ECEFvel[0], ffGeneral, 9,9);
 ECEF_V_YEdit->Text = FloatToStrF( navinfo_pt->ECEFvel[1], ffGeneral, 9,9);
 ECEF_V_ZEdit->Text = FloatToStrF( navinfo_pt->ECEFvel[2], ffGeneral, 9,9);

 CLK_OFF_Edit->Text = FloatToStrF( navinfo_pt->clk_bias, ffGeneral, 6,6);
 GDOP_Edit->Text = FloatToStrF( navinfo_pt->GDOP, ffGeneral, 4,4);
 VDOP_Edit->Text = FloatToStrF( navinfo_pt->PDOP, ffGeneral, 4,4);

}
//---------------------------------------------------------------------------
void TForm1::update_disp(void)
{
  time_t t;
  struct tm *gmt,*area;
  AnsiString time_str;

  ListView1->UpdateItems(0,CH_NUM-1);
  ResultListView->UpdateItems(0,CH_NUM-1);

  t = time(NULL);
  gmt = gmtime(&t);
  time_str = "GMT Time: " + AnsiString(asctime(gmt));
  area = localtime(&t);
  StatusBar->Panels->Items[2]->Text = time_str+",  Local Time: " + AnsiString(asctime(area));
}

//---------------------------------------------------------------------------


void __fastcall TForm1::FormShow(TObject *Sender)
{
 if(handleopened){

     update_gpsweek();

     GpsInterface->control_gp2021(STOP_TIMER); //start firmware timer0
     Sleep(100);
     GpsInterface->control_gp2021(START_TIMER); //start firmware timer0
     Sleep(100);
     Gpsnav->init_gp2021();
     Sleep(20);

     Gpsnav->CreateNavThrd();
     Gpsfunc->CreateGpsThrd();

     c_thread = new ScreenThread(true, this);
     c_thread->Resume();
 }   
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  if(c_thread)
 {
  c_thread->Terminate();
  Sleep(100);
  delete c_thread;
 }

 if( Gpsfunc )
 {
  Gpsfunc->TerminateThrd();
  // wait for the gpsthrd to be terminated
  while(!Gpsfunc->NavThrdIsTermed())
  {
   SetEvent(gpsEvent); //thus no need to wait for 6 secs
   Sleep(100);
  }

  delete Gpsfunc;
 }
 if( Gpsnav )
 {
  Gpsnav->ResumeThrd(); // to terminate this thrd, it must be running
  Sleep(100);
  Gpsnav->TerminateThrd();
  // wait for the navgps thrd to te terminated
  while(!Gpsnav->NavThrdIsTermed())
   Sleep(100);

  delete Gpsnav;
 }

 if( GpsInterface)
 {
  if(handleopened){
   GpsInterface->ThrdTerminate();
   // wait for the smapling thrd to te terminated
   while(!GpsInterface->NavThrdIsTermed())
    Sleep(100);
   GpsInterface->control_gp2021(STOP_TIMER); // stop firmware timer
  }
  delete GpsInterface;
 }

}
//---------------------------------------------------------------------------
void TForm1::update_gpsweek(void)
{
 Gpsfunc->get_gpsweek();
 StatusBar->Panels->Items[1]->Text = "GPS Week: " + IntToStr(GpsWeek);
}

//---------------------------------------------------------------------------
GPS_Func* TForm1::get_gpsfunc_pt(void)
{
 return Gpsfunc;

}
//---------------------------------------------------------------------------
GPS_Nav* TForm1::get_gpsnav_pt(void)
{
 return Gpsnav;
}
IoInterface* TForm1::get_iointerface_pt(void)
{
 return GpsInterface;
}

void __fastcall TForm1::QuitButtonClick(TObject *Sender)
{
 Close();        
}
//---------------------------------------------------------------------------
// read config info from cinfiguration file
void TForm1::read_cfg(FILE* fp)
{
 char oneline[256], *next_charpt, tmp_str[256] ;

 while( (fgets(oneline, 256, fp)) != NULL )
 {
  if( oneline[0] != '#' && oneline[0]!='\n' ) // not comment
  {
   if( next_charpt = strstr(oneline, chn_alt_str) ) // found "ALTCHANNELMAN"
   {
    sscanf(next_charpt, "ALTCHANNELMAN=%s", &tmp_str);
    if( strstr( StrLower(tmp_str),"yes") )
     ch_allocate_manually = true;
    goto READ_END;
   }

   if( next_charpt = strstr(oneline, chprn_str) ) // found "CHPRN"
   {
    sscanf(next_charpt, "CHPRN=%d,%d,%d,%d,%d,%d",
                        prn,prn+1,prn+2,prn+3,prn+4,prn+5);
    goto READ_END;
   }
   if( next_charpt = strstr(oneline, almfile_str) ) // found "ALMFILE"
   {
    sscanf(next_charpt, "ALMFILE=%s",&tmp_str);
    almFileNm = tmp_str;
    goto READ_END;
   }
   if( next_charpt = strstr(oneline, long_str) ) // found "LONGITUDE"
   {
    sscanf(next_charpt, "LONGITUDE=%lg",&llh[0]);
    goto READ_END;
   }
   if( next_charpt = strstr(oneline, lat_str) ) // found "LATITUDE"
   {
    sscanf(next_charpt, "LATITUDE=%lg",&llh[1]);
    goto READ_END;
   }
   if( next_charpt = strstr(oneline, alt_str) ) // found "ALTITUDE"
   {
    sscanf(next_charpt, "ALTITUDE=%lg",&llh[2]);
    goto READ_END;
   }

READ_END:
   oneline[0] = 0;
  }
 } // end of while
}

double TForm1::getlongi(void)
{return llh[0];}

void TForm1::setlongi(double l)
{ llh[0] = l;}

double TForm1::getlati(void)
{return llh[1];}

void TForm1::setlati(double l)
{ llh[1] = l; }

double TForm1::getalti(void)
{return llh[2];}

void TForm1::setalti(double a)
{ llh[2] = a; }

AnsiString TForm1::getalmfilenm(void)
{ return almFileNm;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲男人天堂| 国产一区二区三区| 中文字幕第一区二区| 欧美成人三级电影在线| 欧美日韩一区二区三区视频 | 91免费看视频| 91丝袜美腿高跟国产极品老师| 国产一区二区三区四区五区入口 | 成人avav影音| 99热这里都是精品| 91丝袜美女网| 欧美日韩精品一区视频| 欧美电影影音先锋| 日韩一级黄色片| 精品黑人一区二区三区久久 | 国产无人区一区二区三区| 久久久不卡影院| 久久精品无码一区二区三区| 国产人成一区二区三区影院| 国产精品视频你懂的| 成人免费一区二区三区视频 | 欧美日韩成人高清| 日韩精品一区二区三区中文精品| 久久久亚洲精品一区二区三区| 国产欧美日韩另类一区| 亚洲男帅同性gay1069| 亚洲一二三四区| 手机精品视频在线观看| 国产精品小仙女| 91精品办公室少妇高潮对白| 欧美一区二视频| 中文在线一区二区| 亚洲丰满少妇videoshd| 精品综合免费视频观看| 成人av免费在线| 欧美高清视频不卡网| 久久久久久夜精品精品免费| 一区二区三区四区在线播放| 美女脱光内衣内裤视频久久影院| 国产成人精品免费看| 欧美一级精品大片| 久久久久久久久久看片| 亚洲免费色视频| 黑人巨大精品欧美黑白配亚洲| 99久久精品免费| 欧美一级生活片| 亚洲乱码中文字幕| 国产一区视频在线看| 欧美网站一区二区| 国产精品白丝在线| 裸体健美xxxx欧美裸体表演| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产欧美日韩精品a在线观看| 一区二区三区中文字幕电影| 国产真实乱偷精品视频免| 欧美亚洲国产一区二区三区va| 26uuu国产一区二区三区| 五月激情六月综合| 色哟哟日韩精品| 国产欧美综合在线观看第十页| 日韩高清不卡在线| 日本韩国一区二区三区视频| 国产精品毛片高清在线完整版| 麻豆极品一区二区三区| 欧美妇女性影城| 亚洲在线观看免费| 色噜噜狠狠色综合中国| 国产精品免费视频网站| 国产高清久久久久| 精品成a人在线观看| 秋霞午夜鲁丝一区二区老狼| 欧美疯狂做受xxxx富婆| 亚洲综合在线视频| 色系网站成人免费| 亚洲精品亚洲人成人网在线播放| 成人永久看片免费视频天堂| 久久久久久影视| 国产成人免费在线| 久久久精品国产免大香伊| 激情综合网av| 久久精品视频一区二区三区| 激情成人午夜视频| 国产亚洲综合av| 福利视频网站一区二区三区| 国产精品久久久久久久蜜臀| 99久久精品国产网站| 亚洲欧洲日韩在线| 色综合天天视频在线观看| 亚洲欧美成人一区二区三区| 日本韩国视频一区二区| 一区二区三区中文字幕精品精品| 91国偷自产一区二区三区观看 | 一区二区三区.www| 欧美另类高清zo欧美| 免费高清视频精品| 久久嫩草精品久久久久| 成人免费看视频| 一区二区激情视频| 欧美一级日韩一级| av在线播放不卡| 亚洲在线视频网站| 日韩精品一区二区三区swag| 国产成人免费网站| 亚洲自拍偷拍欧美| 久久久综合精品| 91精品1区2区| 国产综合久久久久久鬼色| 中文字幕一区二| 欧美精选在线播放| 国产精品综合二区| 亚洲自拍偷拍欧美| 久久色在线视频| 欧美综合久久久| 久久成人免费网站| 一区二区三区 在线观看视频| 日韩欧美精品在线视频| 91免费精品国自产拍在线不卡| 日本中文字幕一区二区视频 | 一本色道**综合亚洲精品蜜桃冫| 亚洲成人动漫av| 久久天堂av综合合色蜜桃网| 日本国产一区二区| 国产精品一区二区免费不卡 | 亚洲女性喷水在线观看一区| 91精品国产麻豆国产自产在线| 国产成人亚洲精品狼色在线| 日韩精品一二三四| 亚洲男人都懂的| 国产校园另类小说区| 欧美福利视频一区| 91九色02白丝porn| 波多野结衣一区二区三区| 蜜乳av一区二区| 亚洲一二三四区| 亚洲日本护士毛茸茸| 亚洲综合丝袜美腿| 欧美激情自拍偷拍| 日韩一区二区三区视频在线观看| 色菇凉天天综合网| 不卡的av在线播放| 国产精品18久久久久久vr| 日韩电影在线免费观看| 一区二区不卡在线播放| 国产精品视频九色porn| 欧美精品一区二区三| 欧美一区午夜精品| 91精品国产色综合久久不卡蜜臀| 一本色道久久综合精品竹菊| av成人老司机| 成人毛片在线观看| 国产一区二区三区免费| 狠狠v欧美v日韩v亚洲ⅴ| 日本91福利区| 免费国产亚洲视频| 蜜桃视频第一区免费观看| 丝袜亚洲另类丝袜在线| 亚洲综合免费观看高清完整版| 亚洲黄色录像片| 亚洲制服丝袜av| 五月天视频一区| 美女诱惑一区二区| 麻豆久久一区二区| 国产一区二区免费看| 国产精品88888| 成人深夜在线观看| av成人老司机| 91福利国产成人精品照片| 在线欧美日韩国产| 欧美一区二区私人影院日本| 欧美一二三在线| 欧美成人官网二区| 中文字幕巨乱亚洲| 亚洲欧洲日韩在线| 天天综合天天综合色| 蜜臀久久久久久久| 国产精品中文字幕欧美| 91免费在线播放| 欧美一区二区三区在线电影| 久久免费偷拍视频| 伊人婷婷欧美激情| 蜜臀久久99精品久久久久宅男| 国产毛片精品视频| 日本韩国一区二区三区| 欧美一级片在线| 国产精品免费视频一区| 亚洲国产sm捆绑调教视频 | 欧美videossexotv100| 国产欧美一区二区精品性色超碰| 亚洲人成人一区二区在线观看 | 精品美女在线观看| 日韩毛片精品高清免费| 人人爽香蕉精品| 91日韩精品一区| 日韩一区二区免费电影| 国产精品伦理一区二区| 日韩国产精品大片| 97se亚洲国产综合自在线不卡 | 久久众筹精品私拍模特| 亚洲黄色小视频| 丁香啪啪综合成人亚洲小说|