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 |
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 |