Agilent Technologies 34970A Switch User Manual


 
do{ /* Stay in loop until the srqFlag goes negative */
index = 1;
for (count = 0; count <45; count++)
{
index = 0;
printf(".");
}
printf(" srq flag = %d\n",srqFlag);
}
while (srqFlag>=0); /* A negative srqFlag indicates scan is done */
/* The instrument is done, so close the SRQ handler */
viDisableEvent(DataAcqu,VI_EVENT_SERVICE_REQ,VI_HNDLR);
viUninstallHandler (DataAcqu,VI_EVENT_SERVICE_REQ,SRQ_handler,(ViAddr)10);
viPrintf (DataAcqu,"FETCH?\n"); /* Get all the readings */
viScanf(DataAcqu,"%,10lf",&volt); /* Put readings into an array */
for (index = 0;index<10;index++){ /* Print the readings */
printf("reading %d = %lf\n",index+1,volt[index]);
}
viClose (DataAcqu); /* Close the communication port */
viClose (defaultRM);
}
/* This function will be called when the instrument interrupts the controller with
an SRQ for alarm and/or Operation Complete */
ViStatus _VI_FUNCH SRQ_handler(ViSession DataAcqu, ViEventType eventType,
ViEvent context,ViAddr userHdlr)
{
ViUInt16 statusByte;
viReadSTB(DataAcqu,&statusByte); /* Read status byte register and clear SRQ */
/* Bit 6 (64) indicates this SRQ is for our instrument, bit 1 (2) indicates
an alarm, and bit 5 (32) indicates the standard event register;
so alarm 64+2=66; OPC 64+32=96; both 64+32+2=98 */
if ((statusByte==66)|(statusByte==98)){
srqFlag = 1; /* Set flag to indicate this is an alarm */
viPrintf (DataAcqu,"STATUS:ALARM:EVENT?\n"); /* Check and clear alarm */
viScanf(DataAcqu,"%s",&reply_string);
printf("alarm event; bit = %s\n",reply_string);
}
if ((statusByte==96)|(statusByte==98)){
srqFlag = -1; /* Set flag to indicate end of operation */
viPrintf (DataAcqu,"*ESR?\n"); /* Check and clear ESR bit */
viScanf(DataAcqu,"%s",&reply_string);
printf("Standard Event Register; bit %s\n",reply_string);
}
return VI_SUCCESS;
}
7
Chapter 7 Application Programs
Example Programs for C and C++
331