Programmer’s Guide 2-9
Synchronizing the Analyzer and a Controller
Controlling Execution of Overlapped Commands
*OPC
The following example describes the use of the *OPC? command. For this
discussion, remember that a sequential command holds off the
processing of subsequent commands until it has been completely
processed. An overlapped command does not.
10 OUTPUT @Rfna;"command1"
20 OUTPUT @Rfna;"command2;*OPC?"
30 ENTER @Rfna;Opc_done
40 OUTPUT @Rfna;"command3;"
50 OUTPUT @Rfna;"command4;*OPC?"
60 ENTER @Rfna;Opc_done
70 END
In the example above, commands are sent and completed in the following
order:
• Commands 1 and 2 are sent to the analyzer as fast as the GPIB bus
traffic will allow.
• Command 1 will begin execution before command 2.
• If both commands 1 and 2 are overlapped commands, the order of
command completion is unknown.
• When both commands 1 and 2 have completed execution, commands 3
and 4 will be sent to the analyzer as fast as the GPIB bus traffic will
allow.
• Command 3 will begin execution before command 4.
• If both commands 3 and 4 are overlapped commands, the order of
command completion is unknown.
• This program will not end until the Opc_done, located in line 60, is
returned indicating that both commands have completed execution.
Use *OPC? to ensure commands complete before
proceeding.
This can be done by calling a subroutine that issues the
*OPC? command, and reads the analyzer response with ENTER:
100 Command_done !Example of subroutine using *OPC?
110 OUTPUT @Rfna;"*OPC?"
120 ENTER @Rfna;Opc_done
130 RETURN
Call the Command_done subroutine after each overlapped command to
ensure the desired order of command execution.