| #!/usr/bin/python2 |
| # 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 |