Synchronizing Acquisitions 42
Keysight InfiniiVision 4000 X-Series Oscilloscopes Programmer's Guide 1599
# oscilloscope is in Average, Segmented, and Equivalent Time modes to
# force a trigger off of the AC input line (:TRIGger:EDGE:SOURce LINE)
# which runs at 50 or 60 Hz in most of the world (1/50 Hz -> 20 ms, so
# use 25 ms to be conservative).
#
# The SCOPE_ACQUISITION_TIME_OUT calculation pads this by 1.1.
# --------------------------------------------------------------------
# ====================================================================
# Define a simple and fast function utilizing the blocking :DIGitize
# command in conjunction with *OPC?.
# --------------------------------------------------------------------
#
# Benefits of this method:
#
# - Fastest, compact
# - Only way for Average Acquisition type:
# - The :SINGle command does not do a complete average.
# - Counting triggers with :RUN is much too slow.
# - Allows for easy synchronization with math functions
# - Don't have to deal with the status registers, which can be
# confusing.
# - Potentially faster than polling_method(), for better throughput
# - Because it's faster, one can retrieve more accurate acquisition
# times than with a polling method.
# - Works best for segmented memory if any post processing is done
# on the oscilloscope, for example, measurements, lister, math,
# as this does not come back until the processing is all done
# - In this scenario, :DIGitize does not reduce the sample
# rate or memory depth.
#
# Drawbacks of this method:
#
# - Usually does not fill acquisition memory to the maximum
# available, usually only on-screen data.
#
# - May not be at the highest sample rate (compared with the
# polling_method).
#
# - Requires a well-chosen, hard-set timeout that will cover the
# time to arm, trigger, and finish acquisition.
#
# - Requires Exception handling and a device_clear() for a
# possible timeout (no trigger event).
#
# - Socket connection cannot do device_clear()
#
# - Because :DIGitize is a "specialized form of the :RUN" command,
# on these oscilloscopes, that results in:
#
# - the sample rate MAY be reduced from using :SINGle -
# usually at longer time scales - typically only acquires
# what is on screen, though at the fastest time scales,
# more than on screen data may be acquired. Thus, for max
# memory and max sample rate, use the polling_method(),
# which uses :SINGle.