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

📄 fileprocess.cpp

📁 GPS 定位授时源码
💻 CPP
字号:

#include "stdafx.h"
//#include "windows.h"
#include "Lambda.h"
#include "fstream.h"
#include "iomanip.h"
#include "math.h"
#include "MatrixLYQ.h"
#include "string.h"
#include <stdlib.h>
#include "FileProcess.h"
#include "PPT.h"



int ReadIni (char *lpIni,char Inobs[],char Innav[],char InSP3[],char InClk[],char OutPos[],char OutClock[],CONPARAMETAR &Par)
{		
	ifstream ConFile(lpIni,ios::in|ios::nocreate);
	if (!ConFile)
    {
		cerr<<" *                 Can't open the file-ConFile.ini!               *\n"
			<<" *     You should Create a control file named after 'ConFile.txt' *\n"
			<<" *                 Program terminated with error  !               *\n";
		return 0;
	}
	
	char str[260]; 
	char *p;
	char note[80],eq[30];
	do
	{	if(ConFile.peek()==EOF)
			break; 	
		ConFile.getline(str,260,'\n');
		if(str[0]==0)
			continue;
		if(p=strstr(str,"//"))
			continue;
		if(p=strstr(str,"Is_Model_PPP"))
		{	
			p				 =strtok(str ," ");
			p				 =strtok('\0'," ");
			Par.ModelPPP	 =atoi(strtok('\0'," "));
			continue;
		}
		if(p=strstr(str,"Is_Model_Holding"))
		{	
			p				 =strtok(str ," ");
			p				 =strtok('\0'," ");
			Par.ModelHolding =atoi(strtok('\0'," "));
			continue;
		}
		if(p=strstr(str,"Number_of_Days"))
		{	
			p				 =strtok(str ," ");
			p				 =strtok('\0'," ");
			Par.Days		 =atoi(strtok('\0'," "));
			continue;
		}
		if(p=strstr(str,"TropModel"))
		{	
			p				 =strtok(str ," ");
			p				 =strtok('\0'," ");
			Par.TropModel	 =atoi(strtok('\0'," "));
			continue;
		}

		if(p=strstr(str,"Input_Rinex_obs_file_dir"))
		{	
		
			sscanf(str,"%s%s%s",note,eq,Inobs);//obs file dir to be processed		
			continue;	
		}
		if((!Par.ModelPPP)&&strstr(str,"Input_Rinex_nav_file_dir"))
		{	
			sscanf(str,"%s%s%s",note,eq,Innav);//nav file dir to be processed
			continue;
		}
		if(Par.ModelPPP&&strstr(str,"Input_Sp3_nav_file_dir"))
		{	
			sscanf(str,"%s%s%s",note,eq,InSP3);//sp3 file dir to be processed
			continue;
		}
		//if(Par.ModelPPP&&strstr(str,"Input_Sp3_Clk_file_dir"))
		if(strstr(str,"Input_Sp3_Clk_file_dir"))
		{	
			sscanf(str,"%s%s%s",note,eq,InClk);//clk file dir to be processed
			continue;
		}
		if(strstr(str,"Output_Position_file_dir"))
		{	
			sscanf(str,"%s%s%s",note,eq,OutPos);//outpos file dir to be processed
			continue;
		}
		if(strstr(str,"Output_Clock_file_dir     "))
		{	
			sscanf(str,"%s%s%s",note,eq,OutClock);//outclk file dir to be processed
			continue;
		}
		else continue;
		
	}while(1);
	if(Par.TropModel<=0)
		Par.TropModel=1;
	if(Par.Days     <=0)
		Par.Days	=30;
	if(Par.PhaseSTD<0)
		Par.PhaseSTD=0.02;
	if(Par.PseudoSTD<0)
		Par.PseudoSTD=0.50;
	return 1;
}

int PPPMatchFile(char Inobs[],char InSP3[],char InClk[],char OutPos[],char OutClock[],CONPARAMETAR Par)
{	
	int day          =Par.Days;
	
	char**   ObsFile =new char *[day];
	char**	 SP3File =new char *[day];
	char**   ClkFile =new char *[day];
	for(int  i=0; i<day;  i++)  
	{	ObsFile[i]   =  new  char[260];
	SP3File[i]   =  new  char[260];
	ClkFile[i]   =  new  char[260];
	}

	char   OutPosFile  [260];
	char   OutClockFile[260];


	int  ObsNum,SP3Num,ClkNum;
	char * note;

	note="*.??O";
	FileFind(Inobs,note,ObsFile,ObsNum);
	note="*.sp3";
	if(!FileFind(InSP3,note,SP3File,SP3Num))
	{
		note="*.eph";
		FileFind(InSP3,note,SP3File,SP3Num);
	}
	note="*.clk";
	FileFind(InClk,note,ClkFile,ClkNum);
	
	if((ObsNum!=SP3Num)||(ObsNum!=ClkNum))
	{	printf(" The number of Obs file is not equal to SP3/EPH or clock files.\n     Please check the input files.\n");
		return 0;
	}
	for( i=0;i<ObsNum;i++)
	{	char  cSource[260];
		char * cBase;
		strcpy(cSource,ObsFile[i]);
		
		cBase=strrchr(cSource,92);
		cBase++;
		cBase=strtok(cBase,".");
		strcpy(OutPosFile  ,cBase);	
		strcpy(OutClockFile,cBase);
		strcat(OutPosFile   ,".pos");
		strcat(OutClockFile ,".clk");
		
		char szFile[80];
		strcpy(szFile,OutPos);
		strcat(szFile,"\\");
		strcat(szFile,OutPosFile);
		strcpy(OutPosFile,szFile);
		
		strcpy(szFile,OutClock);
		strcat(szFile,"\\");
		strcat(szFile,OutClockFile);
		strcpy(OutClockFile,szFile);
		
		PPP(ObsFile[i],SP3File[i], ClkFile[i],
			OutPosFile, OutClockFile,Par);
	}
	delete ObsFile[0];
	delete SP3File[0];
	delete ClkFile[0];
	return 1;
}


int SPPMatchFile(char Inobs[],char Innav[],char InClk[],char OutPos[],char OutClock[],CONPARAMETAR Par)
{	
	int day			 = Par.Days;
	
	char**   ObsFile =new char *[day];
	char**	 NavFile =new char *[day];
	char**	 ClkFile =new char *[day];

	for(int  i=0; i<day;  i++)  
	{	ObsFile[i]   =  new  char[260];
		NavFile[i]   =  new  char[260];
		ClkFile[i]	 =	new  char[260];
	}


	char   OutPosFile  [260];
	char   OutClockFile[260];
	
	
	int  ObsNum,NavNum,ClkNum;
	char * note;
	
	note="*.??O";
	if(!FileFind(Inobs,note,ObsFile,ObsNum))
		FileFind(Inobs,"*.??o",ObsFile,ObsNum);
	note="*.??N";
	if(!FileFind(Innav,note,NavFile,NavNum))
		FileFind(Innav,".??n",NavFile,NavNum);

	note="*.clk";
	FileFind(InClk,note,ClkFile,ClkNum);
	
	if((ObsNum!=NavNum)||(ObsNum!=ClkNum))
	{	printf(" The number of Obs file is not equal to Nav files.\n     Please check the input files.\n");
		return 0;
	}
	for(i=0;i<ObsNum;i++)
	{	
	char  cSource[260];
	char * cBase;
	strcpy(cSource,ObsFile[i]);
	
	cBase=strrchr(cSource,92);
	cBase++;
	cBase=strtok(cBase,".");
	strcpy(OutPosFile  ,cBase);	
	strcpy(OutClockFile,cBase);
	strcat(OutPosFile   ,".pos");
	strcat(OutClockFile ,".clk");
	
	char szFile[80];
	strcpy(szFile,OutPos);
	strcat(szFile,"\\");
	strcat(szFile,OutPosFile);
	strcpy(OutPosFile,szFile);
	
	strcpy(szFile,OutClock);
	strcat(szFile,"\\");
	strcat(szFile,OutClockFile);
	strcpy(OutClockFile,szFile);
	
	SPP(ObsFile[i],NavFile[i],ClkFile[i],OutPosFile, OutClockFile,Par);
	}
	delete ObsFile[0];
	delete NavFile[0];
	delete ClkFile[0];
	return 1;
}



int FileFind(char lpPath[],char * str,char ** FileName,int &FileNum)
{	// Find the file with the filter str and rank with the oder increased
	FileNum=0;
    char szFile[80];
	
    WIN32_FIND_DATA FindFileData;
	
    strcpy(szFile,lpPath);
    strcat(szFile,"\\");
	strcat(szFile,str);
	
    HANDLE hFind=::FindFirstFile(szFile,&FindFileData);
    if(INVALID_HANDLE_VALUE == hFind)  return 0;
    //
    while(TRUE)
    {
        if(FindFileData.dwFileAttributes& FILE_ATTRIBUTE_DIRECTORY )
        {
            if(FindFileData.cFileName[0]!='.')
            {	
				
                strcpy(szFile,lpPath);
                strcat(szFile,"\\");
                strcat(szFile,FindFileData.cFileName);
				cout<<"The following are the files in the dorctory "<<szFile<<endl;
             // FileFind(szFile);			
            }
        }
        else
        {	   strcpy(szFile,lpPath);
			   strcat(szFile,"\\");
			   strcat(szFile,FindFileData.cFileName);
		       strcpy(FileName[FileNum],szFile );
			   if (FileNum)
			   {	int ini=FileNum;
					for(int j=FileNum-1;j>=0;j--)
						if(strcmp(FileName[ini],FileName[j])<0)
						{	char  Tem[260];
							strcpy(Tem,FileName[ini]);
							strcpy(FileName[ini],FileName[j]);
							strcpy(FileName[j],Tem);
							ini--;
						}
				   }
			   FileNum++;			
        }
        if(!FindNextFile(hFind,&FindFileData))   
			break;
    }
    FindClose(hFind);
	return 1;
}





















⌨️ 快捷键说明

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