dump_trace.py

changeset 10
2999318b49a2
parent 5
4d86b11abb82
equal deleted inserted replaced
9:3b50c46fca56 10:2999318b49a2
1 import sys 1 import sys
2 import time 2 import time
3 import gpib 3 import gpib
4 4
5 class GPIBtracedumper(gpib.GPIB): 5 class HP3562dumper(gpib.GPIB):
6 6
7 MODE = {'binary': 'DDBN', 7 MODES = {'trace': 'DD',
8 'ascii': 'DDAS', 8 'state': 'DS',
9 'ansi': 'DDAN', 9 'coord': 'DC',
10 } 10 }
11
12 FORMATS = {'binary': 'BN',
13 'ascii': 'AS',
14 'ansi': 'AN'}
15
11 def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1, 16 def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1,
12 address=0): 17 address=0):
13 super(GPIBtracedumper, self).__init__(device, baudrate, timeout, address, mode=1) 18 super(HP3562dumper, self).__init__(device, baudrate, timeout, address, mode=1)
14 19
15 def read_trace(self, mode="binary"): 20 def dump(self, mode='trace', format="binary"):
21 format = format.lower()
16 mode = mode.lower() 22 mode = mode.lower()
17 assert mode in MODE 23 assert mode in self.MODES
18 mode = MODE[mode] 24 assert format in self.FORMATS
25 cmd = self.MODES[mode] + self.FORMATS[format]
26
19 res = "" 27 res = ""
20 self._cnx.write('%s\r'%mode) 28 print "command = ", cmd
29 self._cnx.write('%s\r'%cmd)
21 i = 0 30 i = 0
22 while i<self._retries: 31 while i<self._retries:
23 l = self._cnx.readline() 32 l = self._cnx.readline()
24 if l.strip() == "": 33 if l.strip() == "":
25 i += 1 34 i += 1
27 continue 36 continue
28 res += l 37 res += l
29 i = 0 38 i = 0
30 return res 39 return res
31 40
41
32 42
33 if __name__=='__main__': 43 if __name__=='__main__':
34 import optparse 44 import optparse
35 opt = optparse.OptionParser("A simple tool for dumping the current trace") 45 opt = optparse.OptionParser("A simple tool for dumping the current trace")
36 opt.add_option('-f', '--filename', default=None, 46 opt.add_option('-f', '--filename', default=None,
38 help='Output filename. If not set, write to stdout') 48 help='Output filename. If not set, write to stdout')
39 opt.add_option('-d', '--device', default='/dev/ttyUSB0', 49 opt.add_option('-d', '--device', default='/dev/ttyUSB0',
40 dest='device', 50 dest='device',
41 help='Device of the RS232 connection (default: /dev/ttyUSB0)', 51 help='Device of the RS232 connection (default: /dev/ttyUSB0)',
42 ) 52 )
53 opt.add_option('-a', '--address', default=0,
54 dest='address',
55 help='GPIB address of the device',
56 )
57 opt.add_option('-b', '--block', default='trace',
58 dest='block',
59 help='Data block to dump (may be "trace" [default], "state" or "coord")',
60 )
43 opt.add_option('-m', '--mode', default='binary', 61 opt.add_option('-m', '--mode', default='binary',
44 dest='mode', 62 dest='mode',
45 help='Dumping mode (may be "binary" [default], "ascii" or "ansi")', 63 help='Dumping mode (may be "binary" [default], "ascii" or "ansi")',
46 ) 64 )
47 opt.add_option('-a', '--address', default=0,
48 dest='address',
49 help='GPIB address of the device',
50 )
51 options, argv = opt.parse_args(sys.argv) 65 options, argv = opt.parse_args(sys.argv)
52 66
53 cnx = GPIBtracedumper(device=options.device, 67 cnx = HP3562dumper(device=options.device, address=int(options.address))
54 address=int(options.address)) 68 res = cnx.dump(mode=options.block, format=options.mode)
55 res = cnx.read_trace(mode=options.mode) 69 sys.stderr.write("read %s bytes\n"%(len(res)))
56
57 if options.filename: 70 if options.filename:
58 open(options.filename, 'w').write(res) 71 open(options.filename, 'w').write(res)
59 else: 72 else:
60 print res 73 print res
61 74

mercurial