7 - C Program Examples

} while(presentState != CF_INITIATED);

/* Start the sequence */ cfTrigger(server);

/* Wait for the sequence to end */ do {

cfGetRunState(server, &presentState); /* sleep or do something else */

} while(presentState == CF_FORMING);

/* Read entire measurement log and write it to a disk file */ fp = fopen("logfile", "w");

for (read_pos = CF_READ_FIRST; ; ) {

cfReadMeasLog(server, &read_pos, CF_ALL_CELLS, CF_ALL_STEPS, CF_MEAS_LOG_BUFSIZE, buf, &retcount);

if (retcount) fputs(buf, fp);

else

break;

}

fclose(fp);

/* Close the server connection */ cfClose(server);

return(0);

}

/* Program the charge/discharge sequence */ void setup(CF_HANDLE server)

{

/* Step 1 and tests. */

cfSetSeqStep(server, 1, CF_CHARGE, 4.2, 0.295,

20* SECONDS_PER_MINUTE, 0.0); cfSetSeqTest(server, 1, CF_VOLT_GE, 3.8, CF_TEST_BEFORE,

5* SECONDS_PER_MINUTE, CF_FAIL); cfSetSeqTest(server, 1, CF_CURR_LE, 0.02, CF_TEST_AFTER,

5 * SECONDS_PER_MINUTE, CF_NEXT);

/* Step 2 is a rest step. */ cfSetSeqStep(server, 2, CF_REST, 0.0, 0.0);

10 * SECONDS_PER_MINUTE, 0.0);

/* Step 3 and tests. */

cfSetSeqStep(server, 3, CF_DISCHARGE, 3, 0.295,

15* SECONDS_PER_MINUTE, 0.0); cfSetSeqTest(server, 3, CF_VOLT_LE, 3, CF_TEST_BEFORE,

5* SECONDS_PER_MINUTE, CF_FAIL); cfSetSeqTest(server, 3, CF_VOLT_LE, 3, CF_TEST_AFTER,

5* SECONDS_PER_MINUTE, CF_NEXT); cfSetSeqTest(server, 3, CF_VOLT_GE, 3, CF_TEST_AT,

15 * SECONDS_PER_MINUTE, CF_FAIL);

/* Step 4 is a rest step. */ cfSetSeqStep(server, 4, CF_REST, 0.0, 0.0);

5 * SECONDS_PER_MINUTE, 0.0);

}

106

Page 106
Image 106
Agilent Technologies E4371A, E4370A, E4374A manual Program Examples, 106