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