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)