// clear data --------------------------------------------------------------- void __fastcall TPlot::Clear(void) { AnsiString s; double ep[]={2010,1,1,0,0,0}; int i; trace(3,"Clear\n"); Week=NObs=0; for (i=0;i<2;i++) { freesolbuf(SolData+i); free(SolStat[i].data); SolStat[i].n=0; SolStat[i].data=NULL; } freeobs(&Obs); freenav(&Nav,0xFF); delete [] IndexObs; delete [] Az; delete [] El; IndexObs=NULL; Az=NULL; El=NULL; SolFiles[0]->Clear(); SolFiles[1]->Clear(); ObsFiles->Clear(); NavFiles->Clear(); NObs=0; SolIndex[0]=SolIndex[1]=ObsIndex=0; for (i=0;i<3;i++) { TimeEna[i]=0; } TimeStart=TimeEnd=epoch2time(ep); BtnAnimate->Down=false; if (PlotType>PLOT_NSAT) { UpdateType(PLOT_TRK); } if (!ConnectState) { initsolbuf(SolData ,0,0); initsolbuf(SolData+1,0,0); Caption=Title!=""?Title:s.sprintf("%s ver.%s",PRGNAME,VER_RTKLIB); } else { initsolbuf(SolData ,1,RtBuffSize+1); initsolbuf(SolData+1,1,RtBuffSize+1); } UpdateTime(); UpdatePlot(); }
/* read solutions data from solution files ------------------------------------- * read solution data from soluiton files * args : char *files[] I solution files * int nfile I number of files * (gtime_t ts) I start time (ts.time==0: from start) * (gtime_t te) I end time (te.time==0: to end) * (double tint) I time interval (0: all) * (int qflag) I quality flag (0: all) * solbuf_t *solbuf O solution buffer * return : status (1:ok,0:no data or error) *-----------------------------------------------------------------------------*/ extern int readsolt(char *files[], int nfile, gtime_t ts, gtime_t te, double tint, int qflag, solbuf_t *solbuf, char *posmod, int *lr) { FILE *fp; solopt_t opt=solopt_default; int i; trace(3,"readsolt: nfile=%d\n",nfile); initsolbuf(solbuf,0,0); for (i=0;i<nfile;i++) { if (!(fp=fopen(files[i],"rb"))) { trace(1,"readsolt: file open error %s\n",files[i]); continue; } /* read solution options in header */ readsolopt(fp,&opt,posmod,lr); rewind(fp); /* read solution data */ if (!readsoldata(fp,ts,te,tint,qflag,&opt,solbuf)) { trace(1,"readsolt: no solution in %s\n",files[i]); } fclose(fp); } return sort_solbuf(solbuf); }
// connect to external sources ---------------------------------------------- void __fastcall TPlot::Connect(void) { AnsiString s; char *cmd,*path,buff[MAXSTRPATH],*name[2]={"",""},*p; int i,mode=STR_MODE_R; trace(3,"Connect\n"); if (ConnectState) return; for (i=0;i<2;i++) { if (RtStream[i]==STR_NONE ) continue; else if (RtStream[i]==STR_SERIAL ) path=StrPaths[i][0].c_str(); else if (RtStream[i]==STR_FILE ) path=StrPaths[i][2].c_str(); else if (RtStream[i]<=STR_NTRIPCLI) path=StrPaths[i][1].c_str(); else continue; if (RtStream[i]==STR_FILE||!SolData[i].cyclic||SolData[i].nmax!=RtBuffSize+1) { Clear(); initsolbuf(SolData+i,1,RtBuffSize+1); } if (RtStream[i]==STR_SERIAL) mode|=STR_MODE_W; strcpy(buff,path); if ((p=strstr(buff,"::"))) *p='\0'; if ((p=strstr(buff,"/:"))) *p='\0'; if ((p=strstr(buff,"@"))) name[i]=p+1; else name[i]=buff; if (!stropen(Stream+i,RtStream[i],mode,path)) { ShowMsg(s.sprintf("connect error: %s",name)); ShowLegend(NULL); trace(1,"stream open error: ch=%d type=%d path=%s\n",i+1,RtStream[i],path); continue; } strsettimeout(Stream+i,RtTimeOutTime,RtReConnTime); if (StrCmdEna[i][0]) { cmd=StrCmds[i][0].c_str(); strwrite(Stream+i,(unsigned char *)cmd,strlen(cmd)); } ConnectState=1; } if (!ConnectState) return; if (Title!="") Caption=Title; else Caption=s.sprintf("CONNECT %s %s",name[0],name[1]); BtnConnect->Down=true; BtnSol1 ->Down=*name[0]; BtnSol2 ->Down=*name[1]; BtnSol12 ->Down=false; BtnShowTrack->Down=true; BtnFixHoriz->Down=true; UpdateEnable(); UpdateTime(); UpdatePlot(); }
// clear data ------------------------------------------------------------------ void __fastcall TPlot::Clear(void) { AnsiString s; double ep[]={2010,1,1,0,0,0}; int i; trace(3,"Clear\n"); Week=0; ClearObs(); ClearSol(); for (i=0;i<3;i++) { TimeEna[i]=0; } TimeStart=TimeEnd=epoch2time(ep); BtnAnimate->Down=false; if (PlotType>PLOT_NSAT) { UpdateType(PLOT_TRK); } if (!ConnectState) { initsolbuf(SolData ,0,0); initsolbuf(SolData+1,0,0); Caption=Title!=""?Title:s.sprintf("%s ver.%s",PRGNAME,VER_RTKLIB); } else { initsolbuf(SolData ,1,RtBuffSize+1); initsolbuf(SolData+1,1,RtBuffSize+1); } GoogleEarthView->Clear(); UpdateTime(); UpdatePlot(); }