1#!/usr/bin/python 2# Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6"""Interact with a SCPI device, checking for errors each time.""" 7 8import cellular_system_error 9import logging 10import prologix_scpi_driver 11import scpi 12import sys 13 14try: 15 [target] = sys.argv[1:] 16except ValueError: 17 print 'usage: %s gpib_host_name' % sys.argv[0] 18 # Default to the PXT. 19 target = '172.22.50.244' 20 21logging.basicConfig(level=logging.INFO) 22 23driver = prologix_scpi_driver.PrologixScpiDriver(hostname=target, 24 port=1234, 25 read_timeout_seconds=1) 26s = scpi.Scpi(driver) 27s.opc_on_stanza = False 28 29while True: 30 try: 31 line = raw_input('scpi> ').rstrip() 32 except EOFError: 33 print 34 exit(0) 35 36 try: 37 if line[-1:] == '?': 38 try: 39 s.Query(line) 40 # Catch everything, we always want to try to recover. 41 except Exception: 42 print "**************" 43 print "Query did not result in any data before the timeout" 44 print "**************" 45 else: 46 try: 47 s.SendStanza([line]) 48 # Catch everything, we always want to try to recover. 49 except Exception as e: 50 print "**************" 51 print "Command failed" 52 print "**************" 53 54 except cellular_system_error: 55 continue 56