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

📄 main.c

📁 这是用Labwindows开发的一个RF test程序。 用于日本机种的组装后ANT 测试。
💻 C
📖 第 1 页 / 共 4 页
字号:
		GSM900TestData.PowerAvg,GSM900SpecData.PowerAvgL,GSM900SpecData.PowerAvgH,
		GSM900TestResult.PowerAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
	sprintf(TestReport,"GSM900, Peak Phase Error: %f deg; Spec Range: %d deg ~ %d deg; %s",
		GSM900TestData.PeakPhaseErrorAvg,GSM900SpecData.PeakPhaseErrorL,GSM900SpecData.PeakPhaseErrorH,
		GSM900TestResult.PeakPhaseErrorAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
		sprintf(TestReport,"GSM900, RMS Phase Error: %f deg; Spec Range: %d deg ~ %d deg; %s",
		GSM900TestData.RMSPhaseErrorAvg,GSM900SpecData.RMSPhaseErrorL,GSM900SpecData.RMSPhaseErrorH,
		GSM900TestResult.RMSPhaseErrorAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
//PCN1800 
	strcpy(buffer,"CONF:GSM1800:BS:TCH:ARFC 698\n"); 
	bytewrite=ComWrt (comport, buffer, strlen(buffer));
	InsertListItem(pnl,PNL_LISTBOX,-1,"TCH Channel 698","TCH Channel 698");
	ProcessSystemEvents();
	
	strcpy(buffer,"conf:gsm1800:ms:tch:plev 0\n"); 
	bytewrite=ComWrt (comport, buffer, strlen(buffer)); 
	InsertListItem(pnl,PNL_LISTBOX,-1,"Power Level 0","Power Level 0");
	ProcessSystemEvents();

//Antenna Parameters check
//CONFigure:<system>:PATTenuation:LEVel <RX>, <TX>
//	strcpy(buffer,"CONF:GSM900:PATT:LEV 17,17\n"); 
//	bytewrite=ComWrt (comport, buffer, strlen(buffer)); 
	SetCtrlVal (pnl, PNL_TEXTMSG, "GSM1800 Testing...");
	InsertListItem(pnl,PNL_LISTBOX,-1,"GSM1800 Testing...","GSM1800 Testing...");
	ProcessSystemEvents();
	strcpy(buffer,"MEAS:ARR:RFTR:GRO:ALL:MAV? 10\n");                        
	bytewrite=ComWrt (comport, buffer, strlen(buffer)); 
	//FlushInQ (comport); 
	for(i=0;i<MAX_MEAS_TIME/DELAY;i++)
		{
			Delay(DELAY);
			Inqlength = GetInQLen (comport);
			if(Inqlength!=0&&Inqlength==TEST_DATA_SIZE)//if(Inqlength!=0)
				{
					//Delay(DELAY);
					break;
				}
		}
	ComRd (comport, buffer, Inqlength);  //?
	ResetTestData(&PCN1800TestData);
	ResetTestResult(&PCN1800TestResult);
		
	for(i=0;i<MAX_IN_BUFFER_UPDATE_TIME;i++)
		{
			if(
				(((PCN1800TestData.PeakPhaseErrorAvg-64)<TOLERANCE)&&((PCN1800TestData.PeakPhaseErrorAvg-64)>-TOLERANCE))
				||(((PCN1800TestData.PeakPhaseErrorAvg-0)<TOLERANCE)&&((PCN1800TestData.PeakPhaseErrorAvg-0)>-TOLERANCE))
				)				
				{
					Delay(DELAY);
					ComRd (comport, buffer, Inqlength);  //?
					sscanf(buffer,"%e",&PCN1800TestData.PeakPhaseErrorAvg);
				}	
			else
				{
					break;
				}
		}
	sscanf(buffer,"%e,%e,%e,%e,%e",&PCN1800TestData.PeakPhaseErrorAvg,
								   &PCN1800TestData.RMSPhaseErrorAvg,
								   &PCN1800TestData.FrequencyErrorAvg,
								   &PCN1800TestData.BurstLengthAvg,
								   &PCN1800TestData.PowerAvg);

	MeasResultEvaluate(&PCN1800SpecData,&PCN1800TestData,&PCN1800TestResult);

	sprintf(TestReport,"PCN1800, Average Power: %f dbm; Spec Range: %d dbm ~ %d dbm; %s",
		PCN1800TestData.PowerAvg,PCN1800SpecData.PowerAvgL,PCN1800SpecData.PowerAvgH,
		PCN1800TestResult.PowerAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
	sprintf(TestReport,"PCN1800, Peak Phase Error: %f deg; Spec Range: %d deg ~ %d deg; %s",
		PCN1800TestData.PeakPhaseErrorAvg,PCN1800SpecData.PeakPhaseErrorL,PCN1800SpecData.PeakPhaseErrorH,
		PCN1800TestResult.PeakPhaseErrorAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
		sprintf(TestReport,"PCN1800, RMS Phase Error: %f deg; Spec Range: %d deg ~ %d deg; %s",
		PCN1800TestData.RMSPhaseErrorAvg,PCN1800SpecData.RMSPhaseErrorL,PCN1800SpecData.RMSPhaseErrorH,
		PCN1800TestResult.RMSPhaseErrorAvg?"PASS":"FAIL");
	InsertListItem(pnl,PNL_LISTBOX,-1,TestReport,TestReport);
	
	SetCtrlVal (pnl, PNL_TEXTMSG, "Tests Finished!");
	InsertListItem(pnl,PNL_LISTBOX,-1,"Tests Finished!","Tests Finished!");
	ProcessSystemEvents();
	strcpy(buffer,"CALL:BSR\n");                 
	bytewrite=ComWrt (comport, buffer, strlen(buffer));
	InsertListItem(pnl,PNL_LISTBOX,-1,"Call Disconnected","Call Disconnected");

	if(TestPassed==FAIL)
		{
			//Fail report
			SetPanelAttribute (pnl, ATTR_BACKCOLOR, VAL_RED);
			SetCtrlAttribute (pnl, PNL_TEXTBOX_RESULT, ATTR_TEXT_COLOR, VAL_RED);
			ResetTextBox (pnl, PNL_TEXTBOX_RESULT, "FAIL");		
		}
		else
			{
				SetCtrlAttribute (pnl, PNL_TEXTBOX_RESULT, ATTR_TEXT_COLOR, VAL_GREEN);
				ResetTextBox (pnl, PNL_TEXTBOX_RESULT, "PASS");	
			}
		
/*
	if((MeasResultEvaluate(&GSM900SpecData,&GSM900TestData,&GSM900TestResult)==FAIL)
		||(MeasResultEvaluate(&PCN1800SpecData,&PCN1800TestData,&PCN1800TestResult)==FAIL))
		{
		//Fail report
		TestPassed=0;
		SetPanelAttribute (pnl, ATTR_BACKCOLOR, VAL_RED);
		SetCtrlAttribute (pnl, PNL_TEXTBOX_RESULT, ATTR_TEXT_COLOR, VAL_RED);
		ResetTextBox (pnl, PNL_TEXTBOX_RESULT, "FAIL");		
		}
		else
			{
				TestPassed=1;
				SetCtrlAttribute (pnl, PNL_TEXTBOX_RESULT, ATTR_TEXT_COLOR, VAL_GREEN);
				ResetTextBox (pnl, PNL_TEXTBOX_RESULT, "PASS");	
			}
			*/
//	SetPanelAttribute (pnl, ATTR_BACKCOLOR, VAL_RED);
//	GetPanelAttribute (pnl, ATTR_BACKCOLOR, &BackColor);
//	ResetTextBox (pnl, PNL_TEXTBOX_RESULT, "FAIL"); 


//Switch to DCS1800/PCN test mode
	strcpy(buffer,"conf:syst PCN\n"); 
	bytewrite=ComWrt (comport, buffer, strlen(buffer)); 
	
	//End
	strcpy(buffer,"SYST:COMM:LOC\n"); 
	bytewrite=ComWrt (comport, buffer, strlen(buffer));
	RS232Error=CloseCom (comport);
	//For Test Time 
	//Testing=0;
	//sprintf(strtime,"%d",TestTime);
	//SetCtrlVal (pnl, PNL_TESTTIME, strtime);
	status = GetSystemTime (&SystemTime.hour,&SystemTime.minute,&SystemTime.second);
	MinuteEnd=SystemTime.minute;
	SecondEnd=SystemTime.second;
	TestTime=MinuteEnd-MinuteStart;
	if(TestTime<0)
		{
			TestTime=TestTime+60;
		}
	TestTime=TestTime*60+SecondEnd-SecondStart;
		
	sprintf(strtime,"%d",TestTime);
	SetCtrlVal (pnl, PNL_TESTTIME, strtime);
	ProcessSystemEvents();
	SaveTestResults();

	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;
										}
										
										

	SetCtrlVal (pnl, PNL_TEXTMSG, STR_TURN_OFF_MS);
	Delay(DELAY_FOR_POWER_OFF);
	SetCtrlVal (pnl, PNL_TEXTMSG, STR_TURN_ON_MS);
#ifdef WRITE_PROCESS_DATA
	if(ReadWriteProcessData(1))
		{//Write ProcessData Error
			return 1;
		}
	else
		{//ProcessData Written
			InsertListItem(pnl,PNL_LISTBOX,-1,"Process Data Written!","");
		};
#endif
	return errorIndex;
}
}

int main (int argc, char *argv[])
{	
	int i;
	if (InitCVIRTE (0, argv, 0) == 0)	/* Needed if linking in external compiler; harmless otherwise */
		return -1;	/* out of memory */
	if ((pnl = LoadPanel (0, "interface.uir", PNL)) < 0)
		return -1;
	//Testing=0;
	DisplayPanel (pnl);
	IniErrorInfo(errorInfo);
	if(!InitIniKey())
		{
	//		InsertTextBoxLine (pnl, PNL_TEXTBOX, i, "Ini File Loaded");
			InsertListItem(pnl,PNL_LISTBOX,-1,"Ini Keys Loaded","Ini Keys Loaded");
		}
	
	if(errorIndex=ReadIniFile())
		{
			ErrorReport(errorIndex,errorInfo);
			return errorIndex;
		}
	else
		{
			InsertListItem(pnl,PNL_LISTBOX,-1,"Ini File Loaded","Ini File Loaded");
		}
	if (errorIndex=ImportNetFuncs())
		{
			ErrorReport(errorIndex,errorInfo);
			return errorIndex;
		}
	if(ConnectSFIS(iniData))
		{
			errorIndex=Net_Connect_Error;
			ErrorReport(errorIndex,errorInfo);
			return errorIndex;
			ConfirmPopup ("Error Report","ConnectSFIS FAIL!\nCheck and run the program again.");

		}
	else
		{
			InsertListItem(pnl,PNL_LISTBOX,-1,"SFIS Connected","SFIS Connected");
		}
	if(errorIndex=ReadSpec())
		{
			//ConfirmPopup ("Error Report","Open \"AT.spe\" FAIL!");
			ErrorReport(errorIndex,errorInfo);
			ConfirmPopup ("Error Report","Open \"AT.spe\" FAIL!\nCheck and run the program again.");
			return errorIndex;
		}
	else
		{
			InsertListItem(pnl,PNL_LISTBOX,-1,"Test Spec Read","Test Spec Read");
		}

	//NetConnection("frankzheng","dl",iniData.RequestLogDrive);
//	NetConnection(iniData.HostName,iniData.RequestDir,iniData.RequestLogDrive);
	//test SaveTestResults();
	//SaveTestResults();



	RunUserInterface ();
	return 0;
}

int CVICALLBACK CALLBACK_Start (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
/*
DWORD dwThreadId;             
DWORD dwThrdParam = 1;         
HANDLE hThread;     
char szMsg[80];     
*/	
	switch (event)
		{
		case EVENT_COMMIT:
			//ResetTestData();
			SetCtrlAttribute (pnl, PNL_Start, ATTR_DIMMED, 1);
			ProcessSystemEvents();
			ClearListCtrl(pnl,PNL_LISTBOX);
			//TestMain();
			GoOnTest=1;
			//while(GoOnTest)
				{
					errorIndex=TestMain();
					if(errorIndex!=No_Error)
						{
							ErrorReport(errorIndex,errorInfo);
						}
					if(!strcmp(iniData.SFIS,"TRUE"))
						{
							SFIS_WriteResultFile(errorIndex,errorInfo);
						}
				}
		/*	
		    hThread = CreateThread( 
		        NULL,                        // no security attributes 
		        0,                           // use default stack size  
		       TestMain,// ThreadFunc,                  // thread function 
		        &dwThrdParam,                // argument to thread function 
		        0,                           // use default creation flags 
		        &dwThreadId);                // returns the thread identifier 
		   //WaitForSingleObject(hThread,INFINITE);
		   WaitForSingleObject(hThread,100000);
		   CloseHandle( hThread );
		   */
		   // Check the return value for success. 
		    /*
		   if (hThread == NULL) 
		   {
		      wsprintf( szMsg, "CreateThread failed." ); 
		      MessageBox( NULL, szMsg, "main", MB_OK );
		   }
		
		   else 
		   {
		      getchar();
		      CloseHandle( hThread );
		   }
		   */
				
			SetCtrlAttribute (pnl, PNL_Start, ATTR_DIMMED, 0);
			ProcessSystemEvents();
			
			break;
		case EVENT_RIGHT_CLICK:

			break;
		}
	return 0;
}

int CVICALLBACK Time (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{

	char strTime[SYSTEM_TIME_STRING_SIZE];
	int status;
	struct TimeType SystemTime;
	switch (event)
		{
		case EVENT_TIMER_TICK:
			status = GetSystemTime (&SystemTime.hour,&SystemTime.minute,&SystemTime.second);
			strTime[0]=SystemTime.hour/10+48;
			strTime[1]=SystemTime.hour-(SystemTime.hour/10)*10+48;
			strTime[3]=SystemTime.minute/10+48;
			strTime[4]=SystemTime.minute-(SystemTime.minute/10)*10+48;
			strTime[6]=SystemTime.second/10+48;
			strTime[7]=SystemTime.second-(SystemTime.second/10)*10+48;
			strTime[8]='\0';
			strTime[2]=':';
			strTime[5]=':';
			//For Test Time 
			//if (Testing==1)
			//	{
			//		TestTime++;
			//	}
			SetCtrlVal (pnl, PNL_NOWTIME, strTime);
			ProcessSystemEvents();
			break;
		}
	return 0;

}
																	   
void CVICALLBACK Exit (int menuBar, int menuItem, void *callbackData,
		int panel)
{
	QuitUserInterface (0);
}

void CVICALLBACK OpenHistory (int menuBar, int menuItem, void *callbackData,
		int panel)
{
}

void CVICALLBACK UpdateSpecFile (int menuBar, int menuItem, void *callbackData,
		int panel)
{
	int i;
	FILE *fHostSpec,*fLocalSpec;
	char Hostfilename[STRINGLENGTH];
	char tempchr;
	strcpy(Hostfilename,"\\\\");
	strcat(Hostfilename,iniData.SPECHostName);
	strcat(Hostfilename,"\\");
	strcat(Hostfilename,iniData.SPECDirectory);
	strcat(Hostfilename,"\\");
	strcat(Hostfilename,SPEC_FILE_NAME);
	
	fHostSpec=fopen( Hostfilename, "r" );
	//Host Spec File open failed
	if (fHostSpec==NULL) 
		{
			ConfirmPopup ("Error Report","Open .spe file on host FAIL!");
			//return 0;
		}
	//Host Spec File open OK
	else
		{
			fLocalSpec=fopen( SPEC_FILE_NAME, "w" );
			//Local Spec File open Fail
			if (fLocalSpec==NULL) 
				{
					ConfirmPopup ("Error Report","Open local .spe file FAIL!");
					//return 0;
				}
			//Local Spec File open OK
			else
				{
					for (i=0;i<0xffff;i++)
						{
							tempchr=fgetc(fHostSpec);
							if (tempchr==EOF)
								{
									break;
								}
							fprintf(fLocalSpec,"%c",tempchr);
						}
					fclose(fLocalSpec);
				}
			fclose(fHostSpec);
			InsertListItem(pnl,PNL_LISTBOX,-1,"Test Spec Updated from host.","");
			if(errorIndex=ReadSpec())
				{
					//ConfirmPopup ("Error Report","Open \"AT.spe\" FAIL!");
					ErrorReport(errorIndex,errorInfo);
					ConfirmPopup ("Error Report","Open \"AT.spe\" FAIL!\nCheck and run the program again.");
					//return errorIndex;
				}
			else
				{
					InsertListItem(pnl,PNL_LISTBOX,-1,"Test Spec Read","Test Spec Read");
				}
		}
}

⌨️ 快捷键说明

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