#!/usr/bin/python # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Interact with a SCPI device, checking for errors each time.""" import cellular_system_error import logging import prologix_scpi_driver import scpi import sys try: [target] = sys.argv[1:] except ValueError: print 'usage: %s gpib_host_name' % sys.argv[0] # Default to the PXT. target = '172.22.50.244' logging.basicConfig(level=logging.INFO) driver = prologix_scpi_driver.PrologixScpiDriver(hostname=target, port=1234, read_timeout_seconds=1) s = scpi.Scpi(driver) s.opc_on_stanza = False while True: try: line = raw_input('scpi> ').rstrip() except EOFError: print exit(0) try: if line[-1:] == '?': try: s.Query(line) # Catch everything, we always want to try to recover. except Exception: print "**************" print "Query did not result in any data before the timeout" print "**************" else: try: s.SendStanza([line]) # Catch everything, we always want to try to recover. except Exception as e: print "**************" print "Command failed" print "**************" except cellular_system_error: continue