Fri, 14 Dec 2007 00:21:47 +0100
several updates to the gpib module
0 | 1 | import sys |
2 | import time | |
4 | 3 | import gpib |
0 | 4 | |
5
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
5 | class GPIBtracedumper(gpib.GPIB): |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
6 | |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
7 | MODE = {'binary': 'DDBN', |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
8 | 'ascii': 'DDAS', |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
9 | 'ansi': 'DDAN', |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
10 | } |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
11 | def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1, |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
12 | address=0): |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
13 | super(GPIBtracedumper, self).__init__(device, baudrate, timeout, address, mode=1) |
0 | 14 | |
5
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
15 | def read_trace(self, mode="binary"): |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
16 | mode = mode.lower() |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
17 | assert mode in MODE |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
18 | mode = MODE[mode] |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
19 | res = "" |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
20 | self._cnx.write('%s\r'%mode) |
0 | 21 | i = 0 |
5
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
22 | while i<self._retries: |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
23 | l = self._cnx.readline() |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
24 | if l.strip() == "": |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
25 | i += 1 |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
26 | time.sleep(self._timeout) |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
27 | continue |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
28 | res += l |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
29 | i = 0 |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
30 | return res |
0 | 31 | |
32 | ||
4 | 33 | if __name__=='__main__': |
34 | import optparse | |
35 | opt = optparse.OptionParser("A simple tool for dumping the current trace") | |
36 | opt.add_option('-f', '--filename', default=None, | |
37 | dest='filename', | |
38 | help='Output filename. If not set, write to stdout') | |
39 | opt.add_option('-d', '--device', default='/dev/ttyUSB0', | |
40 | dest='device', | |
41 | help='Device of the RS232 connection (default: /dev/ttyUSB0)', | |
42 | ) | |
43 | opt.add_option('-m', '--mode', default='binary', | |
44 | dest='mode', | |
45 | help='Dumping mode (may be "binary" [default], "ascii" or "ansi")', | |
46 | ) | |
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) | |
0 | 52 | |
5
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
53 | cnx = GPIBtracedumper(device=options.device, |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
54 | address=int(options.address)) |
4d86b11abb82
ported 'dump_trace' to gpib API
David Douard <david.douard@logilab.fr>
parents:
4
diff
changeset
|
55 | res = cnx.read_trace(mode=options.mode) |
0 | 56 | |
4 | 57 | if options.filename: |
58 | open(options.filename, 'w').write(res) | |
59 | else: | |
60 | print res | |
0 | 61 |