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