14 m = [ord(x) for x in s[:-1]] |
14 m = [ord(x) for x in s[:-1]] |
15 M = 0. |
15 M = 0. |
16 for i in range(len(s)-1): |
16 for i in range(len(s)-1): |
17 #M += m[i]<<(i*8) |
17 #M += m[i]<<(i*8) |
18 M += float(m[i])/2**((i+1)*8) |
18 M += float(m[i])/2**((i+1)*8) |
19 |
19 # XXX how do we deal negative numbers? |
20 #if m[0] & 0x80: |
20 #if m[0] & 0x80: |
21 # M = M - 2^(len(s)) |
21 # M = M - 2^(len(s)) |
22 |
|
23 return M * 2**(e+1) |
22 return M * 2**(e+1) |
24 mm = str(M) |
|
25 |
|
26 mm = '0.'+mm + 'e' + str(e) |
|
27 if len(s) == 8: |
|
28 print "mm = ", mm |
|
29 return eval(mm) |
|
30 |
23 |
31 def decode_string(s): |
24 def decode_string(s): |
32 nb = ord(s[0]) |
25 nb = ord(s[0]) |
33 s = s[1:nb+2] |
26 s = s[1:nb+2] |
34 r = "" |
27 r = "" |
|
28 # XXX why do we need to do this? It's not described in the manual... |
35 for c in s: |
29 for c in s: |
36 if ord(c)>128: |
30 r += chr(ord(c) & 0x7F) |
37 c = chr(ord(c)-128) |
|
38 r += c |
|
39 return r |
31 return r |
40 |
32 |
41 EDSP = {0: "No data", |
33 EDSP = {0: "No data", |
42 1: "Frequency response", |
34 1: "Frequency response", |
43 2: "Power spectrum 1", |
35 2: "Power spectrum 1", |
143 22: "Minutes", |
135 22: "Minutes", |
144 23: "V²s/Hz", |
136 23: "V²s/Hz", |
145 24: "Octave", |
137 24: "Octave", |
146 25: "Seconds/Decade", |
138 25: "Seconds/Decade", |
147 26: "Seconds/Octave", |
139 26: "Seconds/Octave", |
148 #... |
140 27: "Hz/Point", |
|
141 28: "Points/Sweep", |
|
142 29: "Points/Decade", |
|
143 30: "Points/Octave", |
|
144 31: "V/Vrms", |
|
145 32: "V²", |
|
146 33: "EU referenced to chan 1", |
|
147 34: "EU referenced to chan 2", |
|
148 35: "EU value", |
149 } |
149 } |
150 |
150 |
151 EMEAS = {0: "Linear resolution", |
151 EMEAS = {0: "Linear resolution", |
152 1: "Log resolution", |
152 1: "Log resolution", |
153 2: "Swept sine", |
153 2: "Swept sine", |
169 |
169 |
170 |
170 |
171 EWIN = {0: "N/A", |
171 EWIN = {0: "N/A", |
172 1: "Hann", |
172 1: "Hann", |
173 2: "Flat top", |
173 2: "Flat top", |
174 #... |
174 3: "Uniforme", |
|
175 4: "Exponential", |
|
176 5: "Force", |
|
177 6: "Force chan 1/expon chan 2", |
|
178 7: "Expon chan 1/force chan 2", |
|
179 8: "User", |
175 } |
180 } |
176 |
181 |
177 HEADER = [ ("Display function", EDSP, 'h', 2), |
182 HEADER = [ ("Display function", EDSP, 'h', 2), |
178 ('Number of elements', int, 'h', 2), |
183 ('Number of elements', int, 'h', 2), |
179 ('Displayed elements', int, 'h', 2), |
184 ('Displayed elements', int, 'h', 2), |