1 # |
1 # |
2 from pygpibtoolkit.pygpib import CommandRegister, Constants, Command |
2 from pygpibtoolkit.pygpib import CommandRegister, Constants, Command |
3 from pygpibtoolkit.pygpib import BoolValue, IntValue, FloatValue |
3 from pygpibtoolkit.pygpib import BoolValue, IntValue, FloatValue |
4 from pygpibtoolkit.pygpib import PercentageValue, FrequencyValue, DurationValue |
4 from pygpibtoolkit.pygpib import PercentageValue, FrequencyValue, DurationValue |
5 from pygpibtoolkit.pygpib import EnumValue, StringValue |
5 from pygpibtoolkit.pygpib import EnumValue, StringValue |
6 from pygpibtoolkit.pygpib import Mode, ModeCommand |
6 from pygpibtoolkit.pygpib import Mode, ModeCommand |
7 |
7 |
8 from pygpibtoolkit.gpibcontroller import AbstractGPIBDevice, deviceRegister |
8 from pygpibtoolkit.gpibcontroller import AbstractGPIBDevice, deviceRegister |
9 |
9 |
10 class Register(CommandRegister): |
10 class Register(CommandRegister): |
11 """ |
11 """ |
231 |
231 |
232 |
232 |
233 class HP356XDevice(AbstractGPIBDevice): |
233 class HP356XDevice(AbstractGPIBDevice): |
234 _accepts = ["HP3562A", "HP3563A"] |
234 _accepts = ["HP3562A", "HP3563A"] |
235 _idn = "ID?" |
235 _idn = "ID?" |
236 |
236 _cmd_register = Register |
237 def __init__(self, idn, address, controller): |
237 |
238 super(HP356XDevice, self).__init__(idn, address, controller) |
|
239 self._registry = Register() # singleton |
|
240 self._cache = dict([(k, None) for k, v in self._registry.items() if isinstance(v, Mode)]) |
|
241 for k in self._registry.keys(): |
|
242 setattr(self, |
|
243 |
|
244 def _get(self, name): |
|
245 print "get ", name |
|
246 assert name in self._registry |
|
247 if name in self._cache: |
|
248 if self._cache[name] is None: |
|
249 # where to get the info? |
|
250 # ... compute value |
|
251 self._cache[name] = value |
|
252 return self._cache[name] |
|
253 self._registry[name].get_value(self._cnx) |
|
254 def _set(self, name, value): |
|
255 assert name in self._registry |
|
256 self._registry[name].set_value(self._cnx, value) |
|
257 deviceRegister.register_manager(HP356XDevice) |
238 deviceRegister.register_manager(HP356XDevice) |