📄 mainbak1.c
字号:
#include "Windows.h"
#include "wtypes.h"
#include "Winnetwk.h"
#include <utility.h>
#include <ansi_c.h>
#include <rs232.h>
#include <cvirte.h> /* Needed if linking in external compiler; harmless otherwise */
#include <userint.h>
#include "interface.h"
#include"ErrorReport.h"
#define DEBUG_TEST
#define INI_FILE_NAME ".\\Sfis.ini"
#define SERVER_SEC "SfServerInfo"
#define CLIENT_SEC "ClientInfo"
#define STATION_NAME "AntennaTest"
#define SPEC_FILE_NAME "AT.spe"
#define SPEC_FILE_VER "1.0"
#define STR_TURN_ON_MS "TURN ON the MS!"
#define STRINGLENGTH 256
#define BUFFERLENGTH 256
#define IO_QUEUE_SIZE 512
#define SIG_REG_SIZE 4
#define TEST_DATA_SIZE 66
#define MAX_TIME_WAIT_REG 10
#define REG_CALL_ACTIVE 64
#define SN_SIZE 16
#define IMEI_SIZE 17
#define TEST_TIME_SIZE 14 //yyyymmddhhmmss
#define COM1 1
#define COM2 2
#define COM3 3
#define COM4 4
#define BAUDRATE 38400
#define DELAY 1 //delay precision
#define MAX_MEAS_TIME 10 //Time wait for measurement ,second
#define MAX_POWERUP_TIME 10 //second
#define MAX_CALLCONNECT_TIME 60 //second
#define SFIF_Delay 0.5
#define SFIF_TRY 50
#define FAIL 1
#define PASS 0
//#define VAL_RED 0xFF0000L
#define VAL_DEFAULT 0xCCFFFFL //NEC ?&H00FFFFC0&
#define SPESTRLINES 10
#define SPESTRLINES2 3
#define SYSTEM_TIME_STRING_SIZE 9
#define ERROR_STRING_NUMBER 50
struct IniData
{
//Server
char HostName[STRINGLENGTH];
char RequestDir[STRINGLENGTH];
char ResponseDir[STRINGLENGTH];
char ResultDir[STRINGLENGTH];
char Folderspe[STRINGLENGTH];
char UserName[STRINGLENGTH];
char Password[STRINGLENGTH];
//Client
char Folder[STRINGLENGTH];
char RequestLogDrive[STRINGLENGTH];
char ResponseLogDrive[STRINGLENGTH];
char ResultLogDir[STRINGLENGTH];
char FolderLogDir[STRINGLENGTH];
char Station[STRINGLENGTH];
char LineNo[STRINGLENGTH];
char Employee[STRINGLENGTH];
};
struct IniKeyName
{
//Server
char HostName[STRINGLENGTH];
char RequestDir[STRINGLENGTH];
char ResponseDir[STRINGLENGTH];
char ResultDir[STRINGLENGTH];
char Folderspe[STRINGLENGTH];
char UserName[STRINGLENGTH];
char Password[STRINGLENGTH];
//Client
char Folder[STRINGLENGTH];
char RequestLogDrive[STRINGLENGTH];
char ResponseLogDrive[STRINGLENGTH];
char ResultLogDir[STRINGLENGTH];
char FolderLogDir[STRINGLENGTH];
char Station[STRINGLENGTH];
char LineNo[STRINGLENGTH];
char Employee[STRINGLENGTH];
};
struct SpecData
{
int PowerAvgH;
int PowerAvgL;
int PeakPhaseErrorH;
int PeakPhaseErrorL;
int RMSPhaseErrorH;
int RMSPhaseErrorL;
};
struct TestData
{
char SN[SN_SIZE];
float PeakPhaseErrorAvg;
float RMSPhaseErrorAvg;
float FrequencyErrorAvg;
float BurstLengthAvg;
float PowerAvg;
};
struct TestResult
{
//Bool variables:0:Pass;1:Fail
int PeakPhaseErrorAvg;
int RMSPhaseErrorAvg;
int FrequencyErrorAvg;
int BurstLengthAvg;
int PowerAvg;
};
struct TimeType
{
int hour;
int minute;
int second;
};
struct DateType
{
int year;
int month;
int day;
};
struct CSVFileRecord
{
char SerialNumber[SN_SIZE+1];
char IMEI[IMEI_SIZE+1];
char TESTTIME[TEST_TIME_SIZE+1];//yyyymmddhhmmss
char StationName[STRINGLENGTH];
char SpecFileName[STRINGLENGTH];
char SpecFileVer[STRINGLENGTH];
};
static int pnl;
int RS232Error,bytewrite,Inqlength,comport;
//int BackColor;
char buffer[IO_QUEUE_SIZE];
struct IniData iniData;
struct IniKeyName iniKeyName;
struct SpecData GSM900SpecData,PCN1800SpecData;
struct TestData GSM900TestData,PCN1800TestData;
struct TestResult GSM900TestResult,PCN1800TestResult;
struct TimeType SystemTime;
struct DateType SystemDate;
struct CSVFileRecord csvFileRecord;
enum ErrorCode errorCode;
char * ErrorString[ERROR_STRING_NUMBER];
DWORD (*funcPtrWNetAddCon) (
LPNETRESOURCE lpNetResource, // connection details
LPCTSTR lpPassword, // password
LPCTSTR lpUsername, // user name
DWORD dwFlags );
DWORD (*funcPtrWNetCancelCon)(
LPCTSTR lpName, // resource name
DWORD dwFlags, // connection type
BOOL fForce // unconditional disconnect option
);
int InitIniKey()
{
strcpy(iniKeyName.HostName,"HostName");
strcpy(iniKeyName.RequestDir,"RequestDir");
strcpy(iniKeyName.ResponseDir,"ResponseDir");
strcpy(iniKeyName.ResultDir,"ResultDir");
strcpy(iniKeyName.Folderspe,"Folderspe");
strcpy(iniKeyName.UserName,"UserName");
strcpy(iniKeyName.Password,"Password");
strcpy(iniKeyName.Folder,"Folder");
strcpy(iniKeyName.RequestLogDrive,"RequestLogDrive");
strcpy(iniKeyName.ResponseLogDrive,"ResponseLogDrive");
strcpy(iniKeyName.ResultLogDir,"ResultLogDir");
strcpy(iniKeyName.FolderLogDir,"FolderLogDir");
strcpy(iniKeyName.Station,"Station");
strcpy(iniKeyName.LineNo,"LineNo");
strcpy(iniKeyName.Employee,"Employee");
return 0;
}
int ReadIniFile()
{
DWORD dNum;
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.HostName,
"",iniData.HostName,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.RequestDir,
"",iniData.RequestDir,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.ResponseDir,
"",iniData.ResponseDir,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.ResultDir,
"",iniData.ResultDir,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.Folderspe,
"",iniData.Folderspe,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.UserName,
"",iniData.UserName,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(SERVER_SEC,
iniKeyName.Password,
"",iniData.Password,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.Folder,
"",iniData.Folder,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.RequestLogDrive,
"",iniData.RequestLogDrive,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.ResponseLogDrive,
"",iniData.ResponseLogDrive,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.ResultLogDir,
"",iniData.ResultLogDir,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.FolderLogDir,
"",iniData.FolderLogDir,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.Station,
"",iniData.Station,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.LineNo,
"",iniData.LineNo,
STRINGLENGTH,INI_FILE_NAME);
dNum=GetPrivateProfileString(CLIENT_SEC,
iniKeyName.Employee,
"",iniData.Employee,
STRINGLENGTH,INI_FILE_NAME);
return 0;
}
int GetCSVFileName(char * filename)
{
char CSVfilename[STRINGLENGTH];
char temp[2];
char year[5];
int status;
status = GetSystemDate (&SystemDate.month, &SystemDate.day, &SystemDate.year);
strcpy (CSVfilename,".\\TestLog\\");
strcat (CSVfilename,STATION_NAME);
strcat(CSVfilename,"_");
year[0]=SystemDate.year/1000+48;
year[1]=(SystemDate.year-(year[0]-48)*1000)/100+48;
year[2]=(SystemDate.year-(year[0]-48)*1000-(year[1]-48)*100)/10+48;
year[3]=(SystemDate.year-(year[0]-48)*1000-(year[1]-48)*100-(year[2]-48)*10)+48;
year[4]='\0';
strcat(CSVfilename,year);
strcat(CSVfilename,"-");
temp[0]=SystemDate.month/10+48;
temp[1]='\0';
strcat(CSVfilename,temp);
temp[0]=SystemDate.month-SystemDate.month/10*10+48;
strcat(CSVfilename,temp);
strcat(CSVfilename,"-");
temp[0]=SystemDate.day/10+48;
strcat(CSVfilename,temp);
temp[0]=SystemDate.day-SystemDate.day/10*10+48;
strcat(CSVfilename,temp);
strcat(CSVfilename,".csv");
strcpy(filename,CSVfilename);
return 0;
}
int ImportNetFuncs()
{
char path[STRINGLENGTH];
char *funcname;
int moduleID;
int status;
strcpy(path,"mpr.lib");
moduleID=LoadExternalModule(path);
funcname="WNetAddConnection2A";
funcPtrWNetAddCon = GetExternalModuleAddr (moduleID, funcname, &status);
funcname="WNetCancelConnection2A";
funcPtrWNetCancelCon = GetExternalModuleAddr (moduleID, funcname, &status);
return 0;
}
int NetConnection(char * strRemotePCName,char * strRemoteDirName,char * strLocdriveName)
{
DWORD dwResult;
char strtemp[BUFFERLENGTH];
//char path[STRINGLENGTH];
int result;
NETRESOURCE RemoteDrive;
RemoteDrive.dwScope = RESOURCE_GLOBALNET;
RemoteDrive.dwType = RESOURCETYPE_DISK;
RemoteDrive.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
RemoteDrive.dwUsage = RESOURCEUSAGE_CONNECTABLE;
RemoteDrive.lpLocalName = strLocdriveName;
strcpy(strtemp,"\\\\");
strcat(strtemp,strRemotePCName);
strcat(strtemp,"\\");
strcat(strtemp,strRemoteDirName);
RemoteDrive.lpRemoteName =strtemp;
//RemoteDrive.lpLocalName = "x:";
//RemoteDrive.lpRemoteName ="\\\\frankzheng\\dl";
dwResult=(*funcPtrWNetAddCon)(&RemoteDrive,NULL,NULL,CONNECT_UPDATE_PROFILE);
return 0;
}
//int NetCancelConnection(char * LogdriveName,DWORD dwFlags,BOOL fForce )
int NetCancelConnection(char * LogdriveName)
{
DWORD dwResult;
//dwResult=(*funcPtrWNetCancelCon)(LogdriveName,dwFlags,fForce);
dwResult=(*funcPtrWNetCancelCon)(LogdriveName,CONNECT_UPDATE_PROFILE,1);
return 0;
}
int ConnectSFIS()
{
NetCancelConnection(iniData.RequestLogDrive);
NetCancelConnection(iniData.ResponseLogDrive);
NetCancelConnection(iniData.ResultLogDir);
NetCancelConnection(iniData.FolderLogDir);
#ifdef DEBUG_TEST
//test
NetConnection("frankzheng","Request",iniData.RequestLogDrive);
NetConnection("frankzheng","response",iniData.ResponseLogDrive);
NetConnection("frankzheng","Result",iniData.ResultLogDir);
NetConnection("frankzheng","Folder",iniData.FolderLogDir);
#endif
NetConnection(iniData.HostName,iniData.RequestDir,iniData.RequestLogDrive);
NetConnection(iniData.HostName,iniData.ResponseDir,iniData.ResponseLogDrive);
NetConnection(iniData.HostName,iniData.ResultDir,iniData.ResultLogDir);
NetConnection(iniData.HostName,iniData.Folder,iniData.FolderLogDir);
return 0;
}
int WriteRequestFile()
{
FILE *fRequest;
char filename[STRINGLENGTH];
strcpy(filename,iniData.RequestLogDrive);
strcat(filename,"\\");
strcat(filename,GSM900TestData.SN);
strcat(filename,".txt");
fRequest=fopen( filename, "w" );
//Fileopen failed
if (fRequest==NULL)
{
;
}
//Fileopen OK
else
{
fprintf(fRequest,"%s;%s;%s",GSM900TestData.SN,iniData.LineNo,iniData.Station);
fclose(fRequest);
}
return 0;
}
int CheckResponseFile()
{
int i,j;
FILE *fResponse;
char filename[STRINGLENGTH];
char buffer[STRINGLENGTH];
//char buffer2[STRINGLENGTH];
char PassFail[5];
char ErrorCode[STRINGLENGTH];
char ErrorDis[STRINGLENGTH];
char* index;
char ch;
strcpy(filename,iniData.ResponseLogDrive);
strcat(filename,"\\");
strcat(filename,GSM900TestData.SN);
strcat(filename,".SF");
//strcpy(buffer,"\0");
//strcpy(ErrorCode,"\0");
//strcpy(ErrorDis,"\0");
for(i=0;i<STRINGLENGTH;i++)
{
buffer[i]=0;
ErrorCode[i]=0;
ErrorDis[i]=0;
}
for (i=0;i<SFIF_TRY;i++)
{
Delay(SFIF_Delay);
fResponse=fopen( filename, "r" );
//Response File does not exist.
if (fResponse==NULL)
{
//continue;
}
//Fileopen OK
else
{
//fclose(fResponse);
break;
}
}//end for
if (fResponse==NULL)
{
//"Can not open Response File,please check the network or the SFIF server"
;
}
else
{
//Response file open OK.
//fscanf(fResponse,"%s",buffer);
for (i=0;i<STRINGLENGTH;i++)
{
ch=fgetc(fResponse);
if (ch==EOF)
break;
buffer[i]=ch;
}
index=strstr(buffer,";");
if (index!=NULL)
{
for(i=0;i<4;i++)
{
PassFail[i]=*(index+i+1);
}
PassFail[4]='\0';
if (!strcmp(PassFail,"PASS"))
{
//Pass
return 0;
}
else
{
if (!strcmp(PassFail,"FAIL"))
{
i=0;
while(index[i+6]!=';')
{
ErrorCode[i]=index[i+6];
i++;
}
i++;
ErrorCode[i]='\0';
j=0;
while(index[i+6]!=';')
{
/*
if(index[i+6]==32)//' '
{
ErrorDis[j]=index[i+6];
}
*/
ErrorDis[j]=index[i+6];
i++;
j++;
}
j++;
ErrorDis[j]='\0';
//FAIL
ConfirmPopup (ErrorCode, ErrorDis);
return 1;
}
}
}
else
{
//Response File Error
}
}
DeleteFile(filename);
return 0;
}
int WriteResultFile()
{
FILE *fResult;
char filename[STRINGLENGTH];
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
{
fprintf(fResult,"%s;%s;%s;%s;%s;%s",iniData.LineNo,iniData.Station,iniData.Employee,GSM900TestData.SN,"PASS","ERROR CODE");
fclose(fResult);
}
return 0;
}
int ResetTestData(struct TestData *testdata)
{
testdata->PeakPhaseErrorAvg=0;
testdata->RMSPhaseErrorAvg=0;
testdata->FrequencyErrorAvg=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -