void main(){ INST id; char addr[80]; char cmd[255]; int opc;
int idx;
printf("This program provides an interactive environment for SCPI \n"); printf("compatible instruments. \n\n");
printf("Enter the SICL address of the instrument to open.\n"); printf("for example: iscpi,24)\n");
gets(addr);
/* install error handler */ ionerror( I_ERROR_EXIT);
/* open the | instrument specified by the user */ | ||||
id | = iopen(addr); |
| |||
itimeout( | id, | 20000); | /* 20 second timeout */ | ||
/* | set up | SRQ | handler */ |
| |
ionsrq( id, | srq_hdlr); |
|
/* enable MAV (bit 4) in status byte to cause an SRQ */ iprintf( id, "*SRE %d\n", MAV_MASK );
/* make sure *SRE finished */ |
|
ipromptf( id, "*OPC?\n", "%d", &opc); | /* opc value not used */ |
printf("\nEnter SCPI Commands/Queries to Instrument at %s\n", addr); printf(" (press return to exit)\n\n");
while(1) |
|
{ |
|
while(0 == gets(cmd)); |
|
if( 0 == strlen(cmd)) |
|
break; | /* quit sending SCPI Commands */ |
/* send command */ iprintf(id, "%s\n", cmd);
/* check cmd for a ’?’, if found assume it is a query */ for(idx=0; idx<strlen(cmd); idx++)
if( ’?’ == cmd[idx])
{
/* wait up to 1 minute for srq handler */ if( 0 != iwaithdlr(60000))
{
printf("ERROR: Failed to process Query\n");
}
break;
}
}/* while - there are commands to send */ /* remove the handler */
ionsrq( id, 0);
/* close the session */
printf("\nClosing Instrument at %s\n", addr);
Chapter 2 | Programming the Status System 17 |