参考组态手册在wincc5.1中导出短期归档的例子
我写了如下脚本作为导出短期归档的动作,但是系统运行中执行到TLGBackup这个函数时就会报错,希望各位大侠能帮我看看是什么原因。
void ActionForExportingArchive (LPTSTR lpszArchivNameReturn, LPTSTR lpszVariablenName , DWORD dwNumberOfRecords)
{
BOOL fRet;
int iTlgCon = 0;
CMN_ERROR Error;
char szProj[MAX_PATH];
char szFile[MAX_PATH];
LPTSTR lpszArchivName = "PDE#HD#ProcessValueArchive#test1";
char szFileName[MAX_PATH] = "";
LPTSTR lpszFileName;
TLG_IO_BACKUP_SELECT ibs;
DWORD dwSize;
time_t Time;
struct tm* TimeStruct;
int nPathLen,nFileLen;
time(&Time);
TimeStruct = localtime(&Time);
DMGetRuntimeProject( szProj, MAX_PATH, &Error);
nPathLen=strlen(szProj);
nFileLen=strlen((strrchr(szProj,'\\')+1));
strncat(szFile,szProj,nPathLen-nFileLen);
sprintf(szFileName,"%s%s",szFile,"ArchiveBackUp.CSV");
lpszFileName=&szFileName[0];
ibs.sysFrom.wYear = 2009;
ibs.sysFrom.wMonth = 1;
ibs.sysFrom.wDay = 1;
ibs.sysFrom.wHour = 0;
ibs.sysFrom.wMinute = 0;
ibs.sysFrom.wSecond = 0;
ibs.sysTo.wYear = (WORD)(TimeStruct->tm_year+2000);
ibs.sysTo.wMonth = (WORD)(TimeStruct->tm_mon+1);
ibs.sysTo.wDay = (WORD)(TimeStruct->tm_mday);
ibs.sysTo.wHour = (WORD)(TimeStruct->tm_hour);
ibs.sysTo.wMinute = (WORD)(TimeStruct->tm_min);
ibs.sysTo.wSecond = (WORD)(TimeStruct->tm_sec);
fRet = TLGConnect( NULL, &Error );
if (fRet==FALSE) printf("Error in TLGConect(...)\r\n");
fRet=TLGGetBackupSize (lpszArchivName,&dwSize,&ibs,TLG_BACKUP_EVACUATE,TLG_BAKFMT_CSV,&Error);
if (fRet==FALSE) printf("Error in TLGGetBackupSize(...) [%s]\r\n",Error.szErrorText);
fRet=TLGBackup (lpszArchivName,lpszFileName,&ibs,TLG_BACKUP_EXPORT,TLG_BAKFMT_CSV,&Error);
if (fRet==FALSE) printf("Error in TLGBackup(...) [%s]\r\n",Error.szErrorText);
TLGDisconnect( NULL );
}