1602 Keysight InfiniiVision 4000 X-Series Oscilloscopes Programmer's Guide
42 Synchronizing Acquisitions
#
# - Slow, as you don't want to poll the oscilloscope too fast.
#
# - DOES NOT work for Equivalent time mode. MUST use the blocking
# method.
#
# - Slow
#
# - Does NOT work for Average Acquisition type
# - :SINGle does not do a complete average
# - It does a single acquisition as if it were in NORMal
# acq. type
# - Counting triggers in :RUN is much too slow
#
# - Works for Segmented Memory, BUT if any post processing is done
# on the oscilloscope, for example measurements, lister, math, as
# this reports that the acquisition is done, which is correct,
# BUT the processing is NOT done, and it will take an indefinite
# amount of time to wait for that, though there is no way to tell
# if it is done. Use the blocking_method for Segmented Memory.
#
# - Can't be used effectively for synchronizing math functions
#
# It can be done by applying an additional hard coded wait after
# the acquisition is done. At least 200 ms is suggested, more
# may be required.
#
# However, as long as the timeout is not excessively short, the
# math happens fast enough that once :OPERegister:CONDition?
# comes back as done that one can just wait for it when it is
# time to pull the math waveform. The exception would be for eye
# or jitter mode on a 6000 X-Series oscilloscope, where the
# processing time can be long.
#
# - Still need some maximum timeout (here MAX_TIME_TO_WAIT),
# ideally, or the script will sit in the while loop forever if
# there is no trigger event
#
# Max timeout (here MAX_TIME_TO_WAIT) must also account for any
# processing done (see comments on math above)
#
# Max timeout (here MAX_TIME_TO_WAIT) must also account for time
# to arm the scope and finish the acquisition
#
# This arm/trigger/finish part is accounted for in the main script.
#
# How it works:
#
# - What really matters is the RUN bit in the Operation Condition
# (not Event) Register. This bit changes based on the
# oscilloscope state.
#
# If the oscilloscope is running, it is high (8), and low (0) if
# it is stopped.
#
# The only (best) way to get at this bit is with the
# :OPERation:CONDition? query. The Operation Condition Register