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

📄 main.c

📁 这是用Labwindows开发的一个RF test程序。 用于日本机种的组装后ANT 测试。
💻 C
📖 第 1 页 / 共 4 页
字号:
									return 1;
								}
						}
				}
			else
				{
					//Response File Error
				}
		}
	fclose(fResponse);
	#ifndef SF_SIMULATIVE_SERVER
	DeleteFile(filename);
	#endif
	return 0;
}

int SFIS_WriteResultFile(enum ErrorIndex eIndex,struct ErrorInfo eInfo[])
{
	FILE *fResult;
	char filename[STRINGLENGTH];
	//char str_errorcode[10];
	strcpy(filename,iniData.ResultLogDir);
	strcat(filename,"\\");
	strcat(filename,GSM900TestData.SN);
	strcat(filename,".txt");

	
	fResult=fopen( filename, "w" );
	//Fileopen failed
	if (fResult==NULL) 
		{
			;
		
		}
	//Fileopen OK
	else
		{
			if (TestPassed==1)
				{
					fprintf(fResult,"%s;%s;%s;%s;%s;%s;",iniData.LineNo,iniData.Station,iniData.Employee,GSM900TestData.SN,"PASS","NO ERROR");
					fclose(fResult);
				}
			else
				{
				/*
					if(GSM900TestResult.PowerAvg==FAIL)
						{
							SFIS_errorNo=1;
						}
						else if(GSM900TestResult.PeakPhaseErrorAvg==FAIL)
							{
								SFIS_errorNo=2;
							}
							else if(GSM900TestResult.RMSPhaseErrorAvg==FAIL)
								{
									SFIS_errorNo=3;
								}
								else if(PCN1800TestResult.PowerAvg==FAIL)
									{
										SFIS_errorNo=4;
									}
									else if(PCN1800TestResult.PeakPhaseErrorAvg==FAIL)
									{
										SFIS_errorNo=5;
									}
										else if(PCN1800TestResult.RMSPhaseErrorAvg==FAIL)
										{
											SFIS_errorNo=6;
										}
					//SFIS_errorNo=SFIS_errorNo+48;
					sprintf(str_errorcode,"F00%d",SFIS_errorNo);
					//strcat(str_errorcode,&SFIS_errorNo);
					fprintf(fResult,"%s;%s;%s;%s;%s;%s",iniData.LineNo,iniData.Station,iniData.Employee,GSM900TestData.SN,"FAIL",str_errorcode);
					fclose(fResult);
					*/
					if(GSM900TestResult.PowerAvg==FAIL)
						{
							errorIndex=GSM900_TX_Average_Power_Fail;
						}
						else if(GSM900TestResult.PeakPhaseErrorAvg==FAIL)
							{
								errorIndex=GSM900_TX_Peak_Phase_Error_Fail;
							}
							else if(GSM900TestResult.RMSPhaseErrorAvg==FAIL)
								{
									errorIndex=GSM900_TX_RMS_Phase_Error_Fail;
								}
								else if(PCN1800TestResult.PowerAvg==FAIL)
									{
										errorIndex=PCN1800_TX_Average_Power_Fail;
									}
									else if(PCN1800TestResult.PeakPhaseErrorAvg==FAIL)
									{
										errorIndex=PCN1800_TX_Peak_Phase_Error_Fail;
									}
										else if(PCN1800TestResult.RMSPhaseErrorAvg==FAIL)
										{
											errorIndex=PCN1800_TX_RMS_Phase_Error_Fail;
										}
					//SFIS_errorNo=SFIS_errorNo+48;
					//sprintf(str_errorcode,"F00%d",SFIS_errorNo);
					//strcat(str_errorcode,&SFIS_errorNo);
					//fprintf(fResult,"%s;%s;%s;%s;%s;%s;",iniData.LineNo,iniData.Station,iniData.Employee,GSM900TestData.SN,"FAIL",errorInfo[errorIndex].ErrorString);
					fprintf(fResult,"%s;%s;%s;%s;%s;%s;",iniData.LineNo,iniData.Station,iniData.Employee,GSM900TestData.SN,"FAIL",eInfo[eIndex].ErrorCode);

					fclose(fResult);
				}
			
		}
	return 0;
	
}

int SimCheck(void)
{

	u8 i;
	u32	vl_Error;
	u8 pp_SimIMSINumber[8];
	
	
	memset(pp_SimIMSINumber, 0x00, 8);
	
	vl_Error = dv80_05SimAskPresence(5000);
	if(vl_Error)
	{
		return -1;
	}
	
	vl_Error = dv80_14ReadIMSINumber (20000, pp_SimIMSINumber , 1);
	if(vl_Error)
	{
		return -1;
	}
	/*
	printf("The IMSI number of SIM card is:");
	for(i=0 ;i<8; i++)
	{
		printf("%X\t",*(pp_SimIMSINumber+i));
	}
	
	printf("\n");
	*/
	return 0;
	
}

int ResetTestData(struct TestData *testdata)
{
	testdata->PeakPhaseErrorAvg=0;
	testdata->RMSPhaseErrorAvg=0;
	testdata->FrequencyErrorAvg=0;
	testdata->BurstLengthAvg=0;
	testdata->PowerAvg=0;
	return 0;
}


int ResetTestResult(struct TestResult*testresult)
{
	testresult->PeakPhaseErrorAvg=PASS;
	testresult->RMSPhaseErrorAvg=PASS;
	testresult->FrequencyErrorAvg=PASS;
	testresult->BurstLengthAvg=PASS;
	testresult->PowerAvg=PASS;
	return 0;
}

int WriteCSVFileHeader(FILE *fp)
{	
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s",
			",,,,,","TEST ITEM","GSM900 Average Power","GSM900 Peak Phase Error","GSM900 RMS Phase Error","GSM1800 Average Power","GSM1800 Peak Phase Error","GSM1800 RMS Phase Error\n");
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s",
			",,,,,","Channel","62","62","62","698","698","698\n");
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s",
			",,,,,","NOTE","PL5","PL5","PL5","PL0","PL0","PL0\n");
	fprintf(fp,"%s,%s,%d,%d,%d,%d,%d,%d,%s",
			",,,,,","Upper Limit",
			GSM900SpecData.PowerAvgH,GSM900SpecData.PeakPhaseErrorH,GSM900SpecData.RMSPhaseErrorH,
			PCN1800SpecData.PowerAvgH,PCN1800SpecData.PeakPhaseErrorH,PCN1800SpecData.RMSPhaseErrorH,"\n");
	fprintf(fp,"%s,%s,%d,%d,%d,%d,%d,%d,%s",
			",,,,,","Lower Limit ",
			GSM900SpecData.PowerAvgL,GSM900SpecData.PeakPhaseErrorL,GSM900SpecData.RMSPhaseErrorL,
			PCN1800SpecData.PowerAvgL,PCN1800SpecData.PeakPhaseErrorL,PCN1800SpecData.RMSPhaseErrorL,"\n");
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s",
			"Serial Number","IMEI","TEST TIME","Station Name","Spec file name","Spec file ver","Unit","dbm","deg","deg","dbm","deg","deg\n");
	return 0;
}


FILE* OpenCSVLogFile(FILE *fp)
{
	char CSVFileName[STRINGLENGTH];
	GetCSVFileName(CSVFileName);
	if (!(fp=fopen(CSVFileName,"r")))
		//CSVFileName does not exist
	{
		//fclose(fp);
		fp=fopen(CSVFileName,"a");
		WriteCSVFileHeader(fp);
	}
	else
	{
		fclose(fp);
		fp=fopen(CSVFileName,"a");
	}
	return fp;
}

int InitCSVFileRecord()
{
	char time[5];
	strcpy(csvFileRecord.IMEI,"");
	strcpy(csvFileRecord.SerialNumber,GSM900TestData.SN);
	strcpy(csvFileRecord.StationName,STATION_NAME);
	strcpy(csvFileRecord.SpecFileName,SPEC_FILE_NAME);
	strcpy(csvFileRecord.SpecFileVer,SPEC_FILE_VER);
	strcpy(csvFileRecord.TESTTIME,GetSystemYear(time));
	strcat(csvFileRecord.TESTTIME,"-");
	strcat(csvFileRecord.TESTTIME,GetSystemMonth(time));
	strcat(csvFileRecord.TESTTIME,"-");
	strcat(csvFileRecord.TESTTIME,GetSystemDay(time));
	strcat(csvFileRecord.TESTTIME," ");
	strcat(csvFileRecord.TESTTIME,GetSystemHour(time));
	strcat(csvFileRecord.TESTTIME,":");
	strcat(csvFileRecord.TESTTIME,GetSystemMinute(time));
	strcat(csvFileRecord.TESTTIME,":");
	strcat(csvFileRecord.TESTTIME,GetSystemSecond(time));
	return 0;
}
int AddCSVFileRecord(FILE *fp)
{
	InitCSVFileRecord();
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%f,%f,%f,%f,%f,%f,%s",
			csvFileRecord.SerialNumber,csvFileRecord.IMEI,csvFileRecord.TESTTIME,csvFileRecord.StationName,csvFileRecord.SpecFileName,csvFileRecord.SpecFileVer,"",
			GSM900TestData.PowerAvg,GSM900TestData.PeakPhaseErrorAvg,GSM900TestData.RMSPhaseErrorAvg,
			PCN1800TestData.PowerAvg,PCN1800TestData.PeakPhaseErrorAvg,PCN1800TestData.RMSPhaseErrorAvg,"\n");
	
	//fclose(fp);
	return 0;
}



int SaveTestResults()
{
	FILE * fpCSV;
	fpCSV=OpenCSVLogFile(fpCSV);
	AddCSVFileRecord(fpCSV);
	fclose(fpCSV);
	return 0;
}

int ReadSpec()
{
	FILE *stream;
	int i,j,ret;
	char tempstr[BUFFERLENGTH]; 
	//sprintf(tempstr,"\\\\%s\\%s");
	//strcpy(tempstr,"\\\\");
	//strcat(tempstr,iniData.SPECHostName);
	if((stream=fopen(SPEC_FILE_NAME,"r"))==NULL)
		{
			//printf("Open \"AT.spe\" FAIL!" );
			//ConfirmPopup ("Error Report","Open \"AT.spe\" FAIL!");
			return Read_Spec_File_Error;
		}
	else
		{
			for (i=0;i<SPESTRLINES;i++)
				{
					fscanf(stream,"%s",tempstr);
				}
			//GSM900 SpecData
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&GSM900SpecData.PowerAvgH,&GSM900SpecData.PowerAvgL);
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&GSM900SpecData.PeakPhaseErrorH,&GSM900SpecData.PeakPhaseErrorL);
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&GSM900SpecData.RMSPhaseErrorH,&GSM900SpecData.RMSPhaseErrorL);

			for (i=0;i<SPESTRLINES2;i++)
				{
					fscanf(stream,"%s",tempstr);
				}
			//PCN1800 SpecData
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&PCN1800SpecData.PowerAvgH,&PCN1800SpecData.PowerAvgL);
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&PCN1800SpecData.PeakPhaseErrorH,&PCN1800SpecData.PeakPhaseErrorL);
			ret=fscanf(stream,"%s\n%d,%d",tempstr,&PCN1800SpecData.RMSPhaseErrorH,&PCN1800SpecData.RMSPhaseErrorL);			
			fclose(stream);
		}
	return 0;
}

int MeasResultEvaluate(struct SpecData* specdata,struct TestData *testdata,struct TestResult *testresult)
{	
	int flag;
	flag=PASS;
	if(testdata->PowerAvg>specdata->PowerAvgH||testdata->PowerAvg<specdata->PowerAvgL)
	{
		testresult->PowerAvg=FAIL;
		flag=FAIL;
		TestPassed=FAIL;
	}
	if(testdata->PeakPhaseErrorAvg>specdata->PeakPhaseErrorH||testdata->PeakPhaseErrorAvg<specdata->PeakPhaseErrorL)
	{
		testresult->PeakPhaseErrorAvg=FAIL;
		flag=FAIL;
		TestPassed=FAIL;
	}
	if(testdata->RMSPhaseErrorAvg>specdata->RMSPhaseErrorH||testdata->RMSPhaseErrorAvg<specdata->RMSPhaseErrorL)
	{
		testresult->RMSPhaseErrorAvg=FAIL;
		flag=FAIL;
		TestPassed=FAIL;
	}
	return flag;
}



int ReadPDFromFlash(void)
{

	u8 vl_Error,i;
	u8 PD=0;
	u8 code[16];
	t_hfd_SectionParam pp_SectionInfo;  
//	pp_SectionInfo.v_RamAddressOfsection=0;
	memset(code,0x00,16);

	vl_Error = dvhfd1_00UpdateMemorySct(5000,0x01,1); 
	vl_Error = dvhfd1_02GetSectionParameters(5000,1,&pp_SectionInfo); 
//	vl_Error = dvhfd1_00UpdateMemorySct(5000,0x01,FMM_SECTION_OM_INDEX); 
//	vl_Error = dvhfd1_02GetSectionParameters(5000,FMM_SECTION_OM_INDEX,&pp_SectionInfo); 
	vl_Error = dvhfd0_05RWMemory(10000,pp_SectionInfo.v_RamAddressOfsection+24,256,15,code,0x01,0);
	vl_Error = dvhfd0_05RWMemory(10000,pp_SectionInfo.v_RamAddressOfsection+PROCESS_DATA_OFFSET,256,1,&PD,0x01,0);  
	if (vl_Error)
	{
	//	return -1;
	}
	
	//printf("The Process Data in flash is:%d\n",PD);
	//printf("The input SN is: %s\n", string);
/*	for(i = 0;i<15;i++)
	{
		printf("%c",code[i]);
	}
*/	
	//printf("\n");
/*	if(strncmp((char*)string, (char*)code, 15))
	{
	
		printf("Two S/N numbers are not consistant!\n");
		return 0;
	}
*/

	if (PD!=0x02)
		{//Process Error.
			
			return 1;
		}

	errorIndex=No_Error;
return 0;
}


int WritePDToFlash(void)
{

		u8 vl_Error;
		u8 PD;
		//u8 code[16];
		t_hfd_SectionParam pp_SectionInfo;
		//TestPassed=1;
		PD=TestPassed?PROCESS_DATA_PASS:PROCESS_DATA_FAIL;
		//memset(code ,0x00,16);
		//memcpy(code,string,15);
		
		vl_Error = dvhfd1_02GetSectionParameters(2000,1,&pp_SectionInfo);
		//vl_Error = dvhfd0_05RWMemory(2000,pp_SectionInfo.v_RamAddressOfsection+PROCESS_DATA_OFFSET,256,15,code,0x00,1);
		vl_Error = dvhfd0_05RWMemory(2000,pp_SectionInfo.v_RamAddressOfsection+PROCESS_DATA_OFFSET,256,1,&PD,0x00,1);
		vl_Error = dvhfd1_00UpdateMemorySct(5000,0x01,1);
		if (vl_Error)
		{
		 	return -1;
		}	
		errorIndex=No_Error;
		return 0;
}



int ReadWriteProcessData(int RW)
{
//RW:0,Read;1,Write

	u32 vl_SLVersion;
	u32 vl_SLRevision;
	u32 vl_SLVersionForDV;
	u32 vl_SLRevisionForDV;
	u32 vl_DVVersion[2];
	u32 vl_DVRevision;
	u32 vl_Error;
	bool vl_TATLimited;
	u32 vl_Identity, vl_Mode, vl_EmbededVersion[2], vl_Key[4];
	u8 vl_VersionType;
	u16 vl_ADC1Value;

	char msg[STRINGLENGTH];
	
	int i;

	/* printf usage */
	/* frank 
	if ((argc<2)||(argc>=3))
	{
		printf("Usage : %s COMx [ENTER]\n",argv[0]);
		printf("For example : %s COM1 [ENTER]\n",argv[0]);
		printf("Press a key to quit.\n");
		getchar();
		exit(1);
	}
	PromptPopup ("Hello","SCAN S\\N:", (char*)string,15);

	frank*/
	
	/* Display Serial link version */
	vl_SLVersion = SL3_01VersionNumber();
	vl_SLRevision = SL3_00RevisionNumber();
	/*frank
	printf("SL Version, Revision : %08X, %08X\n", vl_SLVersion, vl_SLRevision);
	frank*/
	/* Display Driver version */
	dv0_10GetDriverVersion(vl_DVVersion, &vl_DVRevision);

⌨️ 快捷键说明

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