Programming instructions
How to Co-ordinate Two Modules VISA Programming Examples
Agilent 8163A/B, 8164A/B & 8166A/B Mainframes, Fifth Edition 201
 errStatus = viPrintf(vi,"SENS1:CHAN1:POW:REF:STATE:RATIO 
TOREF,0\n");
 checkError(vi,errStatus);
 /* set reference measuremant state to absolute units */
 errStatus = viPrintf(vi,"SENS1:CHAN1:POW:REF:STAT 1\n");
 checkError(vi,errStatus);
 /* turn laser on */
 errStatus = viPrintf(vi,"SOURCE2:CHAN1:POW:STATE 1\n");
 checkError(vi,errStatus);
 /*ask for command completion */
 do
 {
 errStatus = viQueryf(vi,"*OPC?\n","%d",&cmdDone);
 checkError(vi,errStatus);
 } while (!cmdDone);
 /* set the power meter reference to the displayed value (display to 
reference) */
 errStatus = viPrintf(vi,"SENS1:CHAN1:POW:REF:DISP\n");
 checkError(vi,errStatus);
 /*
 read 30 values and display the result; after ten measurements 
 the source output will be halved by making use of the 
attenuation;
 after an other ten measurements the source output will be 
halved
 a second time;
 because of the display to reference command and using the 
 reference, the value printed should be more or less equal to the
 adjusted source attenuation */
 for (i = 1; i <= 30; i++)
 {
 errStatus = viQueryf(vi,"READ1:CHAN1:POW?\n","%s",replyBuf);
 checkError(vi,errStatus);
 if(errStatus ==VI_SUCCESS)printf("power 
#%02d:%s\n",i,replyBuf);
 if(i == 10)
 {
 /* reduce the output power for 3.0 dB */
 errStatus = viPrintf(vi,"SOURCE2:CHAN1:POW:ATT 3.0\n");
 checkError(vi,errStatus);
 }
 if(i == 20)










