Oscilloscope Self Tests
This Python example performs the oscilloscope hardware self tests. Self tests are entirely safe to run but should only be needed if the oscilloscope has a possible error and Keysight support requests a self test. You can also run these self tests from Infiniium's GUI. Click Tools > Hardware Self Tests.... The script runs these pass/fail tests using the *TST? common command.
oscilloscope-self-test.py
#!python3
"""This program illustrates performing the oscilloscope hardware
self-tests on an Infiniium XR8 oscilloscope.
"""
# Import modules.
import pyvisa
import sys
import time
# Global variables.
oscilloscope_visa_address = "TCPIP0::lab-zir-p1z-2.cos.is.keysight.com::inst0::INSTR"
timeout = 180000 # 3 minutes.
def exit_program():
"""Exit program."""
# Close connection to oscilloscope.
sys.stdout.write("Closing oscilloscope connection.\n")
Infiniium.write(":SYSTem:GTLocal") # Unlock GUI.
Infiniium.clear() # Clear oscilloscope communications interface.
Infiniium.close() # Close communications interface to oscilloscope.
rm.close() # Close resource manager.
print("End of program.")
sys.exit()
def check_error_queue(when):
"""Check error queue."""
num_errors = int(Infiniium.query(":SYSTem:ERRor:COUNt?"))
if num_errors:
for _ in range(num_errors):
error_string = Infiniium.query(":SYSTem:ERRor:NEXT? DIAGnostic").strip()
print(f"ERROR: {error_string}")
print(f"Exited because error(s) found when: '{when}'")
exit_program()
# ==========================================================
# Main program:
# ==========================================================
# Connect and initialize oscilloscope.
rm = pyvisa.ResourceManager("C:\\Windows\\System32\\visa64.dll")
try:
Infiniium = rm.open_resource(oscilloscope_visa_address)
except Exception:
print(
f"Unable to connect to oscilloscope at {oscilloscope_visa_address}. Aborting program."
)
sys.exit()
Infiniium.timeout = timeout # Set global timeout.
Infiniium.clear() # Clear the instrument bus.
# Lock GUI happens automatically.
# Send the *TST? query.
print("Running hardware self-tests. Please wait...", flush=True)
start_time = time.time()
tst_result = Infiniium.query("*TST?").strip()
print(f"Hardware self-test took {str(time.time() - start_time)} seconds.")
if tst_result == "0":
print("Hardware self-tests passed.")
elif tst_result == "1":
print("Hardware self-tests failed.")
syst_test_result = Infiniium.query(":SYSTem:TEST?").strip()
print(syst_test_result)
else:
print(f"Unexpected *TST? result: {tst_result}")
# Check error queue.
check_error_queue("End of program")
# Exit program.
exit_program()