Home | History | Annotate | Download | only in cellular
      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 
      8 import cellular_system_error
      9 import logging
     10 import prologix_scpi_driver
     11 import scpi
     12 import sys
     13 
     14 try:
     15     [target] = sys.argv[1:]
     16 except ValueError:
     17     print 'usage: %s gpib_host_name' % sys.argv[0]
     18     # Default to the PXT.
     19     target = '172.22.50.244'
     20 
     21 logging.basicConfig(level=logging.INFO)
     22 
     23 driver = prologix_scpi_driver.PrologixScpiDriver(hostname=target,
     24                                                  port=1234,
     25                                                  read_timeout_seconds=1)
     26 s = scpi.Scpi(driver)
     27 s.opc_on_stanza = False
     28 
     29 while 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