Tue, 18 Dec 2007 00:38:33 +0100
make header_formatter a little bit smarter (interpret bool values when it can)
13
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 | """ |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
2 | HP3562A |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
3 | ======= |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
4 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
5 | Module for communicating with the HP 3562A Digital Signal Analyzer. |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
6 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
7 | Subpackages |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
8 | ----------- |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
9 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
10 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
11 | Constants |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
12 | --------- |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
13 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
14 | """ |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
15 | import struct |
15
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
16 | import re |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
17 | import gpib |
13
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
18 | |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
19 | ######################################## |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
20 | # HP3562A internal binary types decoders |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
21 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
22 | def decode_float(s): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
23 | assert len(s) in [4,8] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
24 | # exponential term |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
25 | e = ord(s[-1]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
26 | if e & 0x80: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
27 | e = e - 256 |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
28 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
29 | # mantissa |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
30 | m = [ord(x) for x in s[:-1]] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
31 | M = 0. |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
32 | for i in range(len(s)-1): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
33 | #M += m[i]<<(i*8) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
34 | M += float(m[i])/2**((i+1)*8) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
35 | # XXX how do we deal negative numbers? |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
36 | #if m[0] & 0x80: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
37 | # M = M - 2^(len(s)) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
38 | return M * 2**(e+1) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
39 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
40 | def decode_string(s): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
41 | nb = ord(s[0]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
42 | s = s[1:nb+2] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
43 | r = "" |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
44 | # XXX why do we need to do this? It's not described in the manual... |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
45 | for c in s: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
46 | r += chr(ord(c) & 0x7F) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
47 | return r |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
48 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
49 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
50 | ### |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
51 | # Some useful functions |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
52 | def format_header(header, head_struct, columns=80): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
53 | """ |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
54 | Pretty print a data block (trace, state or coord) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
55 | """ |
15
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
56 | bool_re = re.compile(r'((?P<before>.*) )?(?P<flag>\w+/\w+)( (?P<after>.*))?') |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
57 | |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
58 | todisp = [] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
59 | for row in head_struct: |
15
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
60 | key = row[0] |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
61 | typ = row[1] |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
62 | val = header.get(key, "N/A") |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
63 | if isinstance(val, basestring): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
64 | val = repr(val) |
15
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
65 | elif typ is bool and isinstance(val, typ): |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
66 | m = bool_re.match(key) |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
67 | if m: |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
68 | d = m.groupdict() |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
69 | key = "" |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
70 | if d['before']: |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
71 | key += d['before'] |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
72 | if d['after']: |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
73 | key += d['after'] |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
74 | key = key.capitalize() |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
75 | val = d['flag'].split('/')[not val] |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
76 | else: |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
77 | val = str(val) |
b930440af354
make header_formatter a little bit smarter (interpret bool values when it can)
David Douard <david.douard@logilab.fr>
parents:
14
diff
changeset
|
78 | else: |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
79 | val = str(val) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
80 | todisp.append((key+":", val)) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
81 | maxk = max([len(k) for k, v in todisp]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
82 | maxv = max([len(v) for k, v in todisp]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
83 | fmt = "%%-%ds %%-%ds"%(maxk, maxv) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
84 | w = maxk+maxv+4 |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
85 | ncols = columns/w |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
86 | nrows = len(todisp)/ncols |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
87 | res = "" |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
88 | for i in range(nrows): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
89 | res += "| ".join([fmt%todisp[j*nrows+i] for j in range(ncols)]) + "\n" |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
90 | return res |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
91 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
92 | def decode_header(data, header_struct): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
93 | d = data |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
94 | typ = d[:2] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
95 | assert typ == "#A" |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
96 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
97 | totlen = struct.unpack('>h', d[2:4])[0] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
98 | idx = 4 |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
99 | tt=0 |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
100 | header = {} |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
101 | for i, (nam, dtype, fmt, nbytes) in enumerate(header_struct): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
102 | if dtype == str: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
103 | val = decode_string(d[idx:]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
104 | else: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
105 | if fmt: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
106 | v = struct.unpack('>'+fmt, d[idx: idx+nbytes])[0] |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
107 | if isinstance(dtype, dict): |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
108 | val = dtype.get(int(v), "N/A") |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
109 | else: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
110 | val = dtype(v) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
111 | else: |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
112 | val = dtype(d[idx: idx+nbytes]) |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
113 | header[nam] = val |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
114 | idx += nbytes |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
115 | return header, idx |
13
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
116 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
117 | ##################### |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
118 | # HP3562A constants |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
119 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
120 | # GPIB buffer size is 3x80 characters lines |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
121 | class STATUS_BYTE(gpib.Constants): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
122 | # HP3562A Status Byte, as returned by a serial poll |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
123 | _constants = [(0x40, "RQS", "Request Service"), # when sent in response to a serial poll |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
124 | (0x20, "ERR", "GPIB error"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
125 | (0x10, "RDY", "ready to accept GPIB commands"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
126 | ] |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
127 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
128 | conditions = [(0, "NSR", "No service requested"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
129 | (1, "USRQ1", "User SRQ #1"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
130 | (2, "USRQ1", "User SRQ #2"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
131 | (3, "USRQ1", "User SRQ #3"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
132 | (4, "USRQ1", "User SRQ #4"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
133 | (5, "USRQ1", "User SRQ #5"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
134 | (6, "USRQ1", "User SRQ #6"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
135 | (7, "USRQ1", "User SRQ #7"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
136 | (8, "USRQ1", "User SRQ #8"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
137 | (9, "EOD", "End of disk action"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
138 | (10, "EOP", "End of plot action"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
139 | (11, "STCH", "Instrument status changed"), # any change in |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
140 | # the status register sets this condition |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
141 | (12, "PWR", "Power on"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
142 | (13, "KEY", "Key pressed"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
143 | (14, "DCP", "Device clear plotter (listen)"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
144 | # ... |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
145 | ] |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
146 | def __init__(self): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
147 | super(STATUS_BYTE, self).__init__() |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
148 | self._conditions = dict([(x[0], x[1]) for x in self.conditions]) |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
149 | self._rev_conditions = dict([(x[1], x[0]) for x in self.conditions]) |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
150 | self._long_conditions = dict([(x[0], x[2]) for x in self.conditions]) |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
151 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
152 | def byte_condition(self, byte): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
153 | byte = byte & 0x8F |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
154 | return self._conditions.get(byte, "N/A") |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
155 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
156 | class IS_REGISTER(gpib.Constants): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
157 | _constants = [(0x01, "MEASP", "measeurement pause"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
158 | (0x02, "ASQP", "Auto sequence pause"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
159 | (0X04, "EOM", "End of measurement, capture or throughput"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
160 | (0x08, "EOAS", "End of auto sequence"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
161 | (0x10, "SWPR", "Sweep point ready"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
162 | (0x20, "CH1OV", "Channel 1 overrange"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
163 | (0x40, "CH2OV", "Channel 2 overrange"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
164 | (0X80, "CH1HR", "Channel 1 half range"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
165 | (0x100, "CH2HR", "Channel 2 half range"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
166 | (0x200, "SFALT", "Source falt"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
167 | (0x400, "RUNL", "Reference unlock"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
168 | (0x800, "RMKT", "Remote marker knob turn"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
169 | (0x1000, "REKT", "Remote entry knob turn"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
170 | (0x2000, "ASRC", "Asctive Status Register changed"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
171 | (0x4000, "PWRF", "Power-on test failed"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
172 | ] |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
173 | |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
174 | class StatusQuery(gpib.Constants): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
175 | _command = "STA?" |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
176 | _constants = [(0x01, "N/A", "Not used"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
177 | (0x02, "N/A", "Not used"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
178 | (0x04, "KEY", "Key pressed"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
179 | (0x08, "N/A", "Not used"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
180 | (0x10, "RDY", "Ready"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
181 | (0x20, "ERR", "Error"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
182 | (0x40, "RQS", "Request"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
183 | (0x80, "MOS", "Message on screen"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
184 | (0x100, "MEASP", "measeurement pause"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
185 | (0x200, "ASQP", "Auto sequence pause"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
186 | (0X400, "EOM", "End of measurement, capture or throughput"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
187 | (0x800, "EOAS", "End of auto sequence"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
188 | (0x1000, "SWPR", "Sweep point ready"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
189 | (0x2000, "CH1OV", "Channel 1 overrange"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
190 | (0x4000, "CH2OV", "Channel 2 overrange"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
191 | (0x8000, "MAOV", "Math overflow"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
192 | ] |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
193 | class ActivityStatysRegister(gpib.Constants): |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
194 | _command = "AS?" |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
195 | _constants = [(0x01, "CKFL", "Check fault log"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
196 | (0x02, "FITR", "Filling time record"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
197 | (0x04, "FLTR", "Filters settings"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
198 | (0x08, "CFTP", "Curve fir in progress"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
199 | (0x10, "MSSM", "Missed sample"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
200 | (0x20, "TMPR", "Timed preview"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
201 | (0x40, "ACDA", "Accept date"), |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
202 | #... |
78e3e839658b
some forgotten added files
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
203 | ] |
14
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
204 | |
07e2cbf140df
several improvements; add an internal state reader
David Douard <david.douard@logilab.fr>
parents:
13
diff
changeset
|
205 |