| #!/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 logging, readline, sys |
| |
| import prologix_scpi_driver, scpi |
| |
| |
| try: |
| [target] = sys.argv[1:] |
| except ValueError: |
| print 'usage: %s gpib_host_name' % sys.argv[0] |
| exit(1) |
| |
| |
| logging.basicConfig(level=logging.INFO) |
| |
| driver = prologix_scpi_driver.PrologixScpiDriver(hostname=target,port=1234) |
| s = scpi.Scpi(driver) |
| s.opc_on_stanza = False |
| |
| while True: |
| try: |
| line = raw_input('scpi> ').rstrip() |
| except EOFError: |
| print |
| exit(0) |
| |
| try: |
| # TODO(rochberg): If our query is in fact an error, then we |
| # will hang waiting for ++read to return. |
| if line[-1:] == '?': |
| s.Query(line) |
| else: |
| s.SendStanza([line]) |
| |
| except scpi.Error: |
| continue |