17 import mx.DateTime as dt |
17 import mx.DateTime as dt |
18 |
18 |
19 from pygpibtoolkit.pygpib import Constants, Command |
19 from pygpibtoolkit.pygpib import Constants, Command |
20 from pygpibtoolkit.pygpib import Mode, ModeCommand |
20 from pygpibtoolkit.pygpib import Mode, ModeCommand |
21 from pygpibtoolkit.pygpib import VoltageValue |
21 from pygpibtoolkit.pygpib import VoltageValue |
22 from pygpibtoolkit.pygpib import WriteOnlyMode |
22 from pygpibtoolkit.pygpib import SimpleMode |
23 |
23 |
24 from pygpibtoolkit.gpibcontroller import AbstractGPIBDevice, deviceRegister |
24 from pygpibtoolkit.gpibcontroller import AbstractGPIBDevice, deviceRegister |
25 |
25 |
26 class _VoltageValue(VoltageValue): |
26 class _VoltageValue(VoltageValue): |
27 _units = "VL","MV","UV" |
27 _units = "VL","MV","UV" |
28 |
28 |
29 class APA(_VoltageValue): |
29 class APA(_VoltageValue): |
30 "CHAN A AMP - Channel A amplitude" |
30 "CHAN A AMP - Channel A amplitude" |
31 class APB(_VoltageValue): |
31 class APB(_VoltageValue): |
32 "CHAN A AMP - Channel A amplitude" |
32 "CHAN B AMP - Channel B amplitude" |
33 class APC(_VoltageValue): |
33 class APC(_VoltageValue): |
34 "CHAN A AMP - Channel A amplitude" |
34 "CHAN C AMP - Channel C amplitude" |
35 class APD(_VoltageValue): |
35 class APD(_VoltageValue): |
36 "CHAN A AMP - Channel A amplitude" |
36 "CHAN D AMP - Channel D amplitude" |
37 |
37 |
38 class Backlight(WriteOnlyMode): |
38 class Backlight(SimpleMode): |
39 "Backlight" |
39 "Backlight" |
40 _init_value = "BO" |
|
41 |
40 |
42 BF = ModeCommand("Off", "OFF") |
41 BF = ModeCommand("Off", "OFF") |
43 BO = ModeCommand("On", "ON") |
42 BO = ModeCommand("On", "ON") |
44 |
43 |
45 class _PerOutputMode(WriteOnlyMode): |
44 |
|
45 class _PerOutputMode(SimpleMode): |
46 |
46 |
47 def __init__(self): |
47 def __init__(self): |
48 self._cmds = [] |
48 self._cmds = [] |
49 for cmdname, cmd in self.__class__.__dict__.items(): |
49 for cmdname, cmd in self.__class__.__dict__.items(): |
50 if isinstance(cmd, ModeCommand): |
50 if isinstance(cmd, ModeCommand): |
58 |
58 |
59 |
59 |
60 class Filter1(_PerOutputMode): |
60 class Filter1(_PerOutputMode): |
61 "Filter for output 1" |
61 "Filter for output 1" |
62 _prefix = "FS1" |
62 _prefix = "FS1" |
63 _init_value = "AU" |
63 |
64 SH = ModeCommand("Elliptic (sharp cutoff)", "ELIPT.") |
64 SH = ModeCommand("Elliptic (sharp cutoff)", "ELIPT.") |
65 LO = ModeCommand("Gaussian (low overshoot)", "GAUSS.") |
65 LO = ModeCommand("Gaussian (low overshoot)", "GAUSS.") |
66 AU = ModeCommand("Automatic", "AUTO") |
66 AU = ModeCommand("Automatic", "AUTO") |
67 |
67 |
68 class Filter2(Filter1): |
68 class Filter2(Filter1): |
69 "Filter for output 2" |
69 "Filter for output 2" |
70 _prefix = "FS2" |
70 _prefix = "FS2" |
71 |
71 |
|
72 |
|
73 class Float1(_PerOutputMode): |
|
74 "Float Control for output 1" |
|
75 _prefix = "FC1" |
|
76 ON = ModeCommand("On", "ON") |
|
77 OF = ModeCommand("Off", "OFF") |
|
78 |
|
79 class Float2(Float1): |
|
80 "Float Control for output 2" |
|
81 _prefix = "FC2" |
|
82 |
|
83 class _FrequencyValue(FrequencyValue): |
|
84 _units = ['HZ','KZ'] |
|
85 |
|
86 class FRA(_FrequencyValue): |
|
87 "CHAN A FRQ - Channel A frequency" |
|
88 class FRB(_FrequencyValue): |
|
89 "CHAN B FRQ - Channel B frequency" |
|
90 class FRC(_FrequencyValue): |
|
91 "CHAN C FRQ - Channel C frequency" |
|
92 class FRD(_FrequencyValue): |
|
93 "CHAN D FRQ - Channel D frequency" |
|
94 |
|
95 class OutputControl1(_PerOutputMode): |
|
96 "Output 1" |
|
97 _prefix = "OO1" |
|
98 ON = ModeCommand("On", "ON") |
|
99 OF = ModeCommand("Off", "OFF") |
|
100 |
|
101 class OutputControl2(OutputControl1): |
|
102 "Output 2" |
|
103 _prefix = "OO2" |
|
104 |
|
105 class _PhaseValue(FloatUnitValue): |
|
106 _units = ['DG', 'RD'] |
|
107 _name = "phase" |
|
108 |
|
109 class PHA(_PhaseValue): |
|
110 "CHAN A PHA - Channel A phase" |
|
111 class PHB(_PhaseValue): |
|
112 "CHAN B PHA - Channel B phase" |
|
113 class PHC(_PhaseValue): |
|
114 "CHAN C PHA - Channel C phase" |
|
115 class PHD(_PhaseValue): |
|
116 "CHAN D PHA - Channel D phase" |
|
117 |
|
118 class _Waveform(_PerOutputMode): |
|
119 "waveform" |
|
120 SI = ModeCommand('Sine', 'SINE') |
|
121 RA = ModeCommand('Ramp', 'RAMP') |
|
122 TR = ModeCommand('Triangle', 'TRG') |
|
123 SQ = ModeCommand('Square', 'SQR') |
|
124 NS = ModeCommand('Noise', 'NOIS') |
|
125 DC = ModeCommand('DC', 'DC') |
|
126 |
|
127 class WaveformA(_Waveform): |
|
128 "CHAN A FORM - Channel A waveform" |
|
129 _prefix = "WFA" |
|
130 class WaveformB(_Waveform): |
|
131 "CHAN B FORM - Channel B waveform" |
|
132 _prefix = "WFB" |
|
133 class WaveformC(_Waveform): |
|
134 "CHAN C FORM - Channel C waveform" |
|
135 _prefix = "WFC" |
|
136 class WaveformD(_Waveform): |
|
137 "CHAN D FORM - Channel D waveform" |
|
138 _prefix = "WFD" |
|
139 |
|
140 |
|
141 class _Destination(_PerOutputMode): |
|
142 "Destination" |
|
143 AM = ModeCommand('AM', 'AM') |
|
144 FM = ModeCommand('FM', 'FM') |
|
145 PM = ModeCommand('PM', 'PM') |
|
146 DS = ModeCommand('DS', 'DS') |
|
147 PU = ModeCommand('PU', 'PU') |
|
148 OC1 = ModeCommand('OC1', 'OC1') |
|
149 OC2 = ModeCommand('OC2', 'OC2') |
|
150 OF = ModeCommand('OF', 'OF') |
72 |
151 |
73 class HP8904Device(AbstractGPIBDevice): |
152 class HP8904Device(AbstractGPIBDevice): |
74 _accepts = ["^(?P<model>HP *8904A).*$",] |
153 _accepts = ["^(?P<model>HP *8904A).*$",] |
75 _idn = "ID" |
154 _idn = "ID" |
76 |
155 |