diff -r 000000000000 -r 9af1509775b6 dump_as_ascii.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dump_as_ascii.py Mon Dec 10 20:05:39 2007 +0100 @@ -0,0 +1,76 @@ +import sys +import time +import serial + +MODE = {'binary': 'DDBN', + 'ascii': 'DDAS', + 'ansi': 'DDAN', + } +class ConnectionError(Exception): + pass + +def read_trace(cnx, mode="binary"): + mode = mode.lower() + assert mode in MODE + mode = MODE[mode] + res = "" + cnx.write('%s\r'%mode) + i = 0 + while i<5: + l = cnx.readline() + if l.strip() == "": + i += 1 + time.sleep(0.1) + continue + #print "got a new line (%s chars) [i=%s]"%(len(l), i) + res += l + i = 0 + return res + +def open_connection(device="/dev/ttyUSB0", baudrate=115200, timeout=0.1, + address=0, mode=1): + p = serial.Serial(port=device, baudrate=baudrate, timeout=timeout) + + p.write('++addr %d\r'%address) # set address to 0 + p.write('++mode %d\r'%mode) # read listen only mode + p.write('++mode\r') + i = 0 + for i in range(10): + rmode = p.readline().strip() + if rmode != "": + break + time.sleep(timeout) + + if rmode == '' or int(rmode) != mode: + raise ConnectionError("Can't set GPIB mode to %s"%mode) + return p + + +import optparse +opt = optparse.OptionParser() +opt.add_option('-f', '--filename', default=None, + dest='filename', + help='Output filename. If not set, write to stdout') +opt.add_option('-d', '--device', default='/dev/ttyUSB0', + dest='device', + help='Device of the RS232 connection (default: /dev/ttyUSB0)', + ) +opt.add_option('-m', '--mode', default='binary', + dest='mode', + help='Dumping mode (may be "binary" [default], "ascii" or "ansi")', + ) +opt.add_option('-a', '--address', default=0, + dest='address', + help='GPIB address of the device', + ) +options, argv = opt.parse_args(sys.argv) + +cnx = open_connection(device=options.device, + address=int(options.address), mode=1) +res = read_trace(cnx, mode=options.mode) + +if options.filename: + open(options.filename, 'w').write(res) +else: + print res +