Agilent Technologies E4374A, E4370A, E4371A manual C Program Examples

Models: E4374A E4371A E4370A

1 141
Download 141 pages 7.46 Kb
Page 113
Image 113

C Program Examples - 7

//Signal threads to start reading logs. SetEvent(ThreadInfo[0].hStart); SetEvent(ThreadInfo[1].hStart);

//Wait for threads to terminate. WaitForSingleObject(hReadThread0, INFINITE); WaitForSingleObject(hReadThread1, INFINITE); printf("Press any key to exit\n"); getchar();

}

/***************************************************************************** Thread to read log from MCCD.

*****************************************************************************/

DWORD WINAPI ReadThread(LPVOID lpvThreadParm)

{

int nThread = (int)lpvThreadParm; CF_READP readPos;

FILE *hFile;

char szMeasBuffer[MEAS_BUF_SIZE]; char szTimeStamp[LINE_SIZE];

int nMeasBufCount; CF_HANDLE hServer;

//Wait for a signal to start reading the data logs. WaitForSingleObject(ThreadInfo[nThread].hStart, INFINITE);

//Open a connection to MCCD.

printf("Thread %d trying MCCD: %s\n", nThread, ThreadInfo[nThread].szAddr);

if (cfOpen(ThreadInfo[nThread].szAddr, &hServer, PASSWORD) != CF_OK) { printf("Thread %d could not connect to MCCD: %s\n",

nThread, ThreadInfo[nThread].szAddr); return 1;

}

printf("Thread %d connected to MCCD: %s\n", nThread, ThreadInfo[nThread].szAddr);

// Read the measurement log to a file.

if((hFile = fopen(ThreadInfo[nThread].szLogFile, "w")) != NULL) { GetTimeStamp(szTimeStamp);

fwrite(szTimeStamp, sizeof(char), strlen(szTimeStamp), hFile); readPos = CF_READ_FIRST;

while (1) {

cfReadMeasLog(hServer, &readPos, CF_ALL_CELLS, CF_ALL_STEPS, MEAS_BUF_SIZE, szMeasBuffer, &nMeasBufCount);

if (nMeasBufCount == 0) break;

fwrite(szMeasBuffer, sizeof(char), nMeasBufCount, hFile);

}

GetTimeStamp(szTimeStamp);

fwrite(szTimeStamp, sizeof(char), strlen(szTimeStamp), hFile); fclose(hFile);

}

return 0;

}

113

Page 113
Image 113
Agilent Technologies E4374A, E4370A, E4371A manual C Program Examples