add more commands to HP_8904 device

Mon, 30 Mar 2009 21:32:14 +0200

author
David Douard <david.douard@logilab.fr>
date
Mon, 30 Mar 2009 21:32:14 +0200
changeset 81
19e4da44795e
parent 80
89e31bd2524b
child 82
550811b4c3c1

add more commands to HP_8904 device

pygpibtoolkit/HP8904.py file | annotate | diff | comparison | revisions
pygpibtoolkit/pygpib.py file | annotate | diff | comparison | revisions
--- a/pygpibtoolkit/HP8904.py	Thu Mar 26 20:56:18 2009 +0100
+++ b/pygpibtoolkit/HP8904.py	Mon Mar 30 21:32:14 2009 +0200
@@ -19,7 +19,7 @@
 from pygpibtoolkit.pygpib import Constants, Command
 from pygpibtoolkit.pygpib import Mode, ModeCommand
 from pygpibtoolkit.pygpib import VoltageValue
-from pygpibtoolkit.pygpib import WriteOnlyMode
+from pygpibtoolkit.pygpib import SimpleMode
 
 from pygpibtoolkit.gpibcontroller import AbstractGPIBDevice, deviceRegister
 
@@ -29,20 +29,20 @@
 class APA(_VoltageValue):
     "CHAN A AMP - Channel A amplitude"
 class APB(_VoltageValue):
-    "CHAN A AMP - Channel A amplitude"
+    "CHAN B AMP - Channel B amplitude"
 class APC(_VoltageValue):
-    "CHAN A AMP - Channel A amplitude"
+    "CHAN C AMP - Channel C amplitude"
 class APD(_VoltageValue):
-    "CHAN A AMP - Channel A amplitude"
+    "CHAN D AMP - Channel D amplitude"
 
-class Backlight(WriteOnlyMode):
+class Backlight(SimpleMode):
     "Backlight"
-    _init_value = "BO"
 
     BF = ModeCommand("Off", "OFF")
     BO = ModeCommand("On", "ON")
 
-class _PerOutputMode(WriteOnlyMode):
+
+class _PerOutputMode(SimpleMode):
     
     def __init__(self):
         self._cmds = []
@@ -60,7 +60,7 @@
 class Filter1(_PerOutputMode):
     "Filter for output 1"
     _prefix = "FS1"
-    _init_value = "AU"
+
     SH = ModeCommand("Elliptic (sharp cutoff)", "ELIPT.")
     LO = ModeCommand("Gaussian (low overshoot)", "GAUSS.")
     AU = ModeCommand("Automatic", "AUTO")
@@ -69,6 +69,85 @@
     "Filter for output 2"
     _prefix = "FS2"
     
+
+class Float1(_PerOutputMode):
+    "Float Control for output 1"
+    _prefix = "FC1"
+    ON = ModeCommand("On", "ON")
+    OF = ModeCommand("Off", "OFF")
+
+class Float2(Float1):
+    "Float Control for output 2"
+    _prefix = "FC2"
+
+class _FrequencyValue(FrequencyValue):
+    _units = ['HZ','KZ']
+    
+class FRA(_FrequencyValue):
+    "CHAN A FRQ - Channel A frequency"
+class FRB(_FrequencyValue):
+    "CHAN B FRQ - Channel B frequency"
+class FRC(_FrequencyValue):
+    "CHAN C FRQ - Channel C frequency"
+class FRD(_FrequencyValue):
+    "CHAN D FRQ - Channel D frequency"
+
+class OutputControl1(_PerOutputMode):
+    "Output 1"
+    _prefix = "OO1"
+    ON = ModeCommand("On", "ON")
+    OF = ModeCommand("Off", "OFF")
+
+class OutputControl2(OutputControl1):
+    "Output 2"
+    _prefix = "OO2"
+
+class _PhaseValue(FloatUnitValue):
+    _units = ['DG', 'RD']
+    _name = "phase"
+
+class PHA(_PhaseValue):
+    "CHAN A PHA - Channel A phase"
+class PHB(_PhaseValue):
+    "CHAN B PHA - Channel B phase"
+class PHC(_PhaseValue):
+    "CHAN C PHA - Channel C phase"
+class PHD(_PhaseValue):
+    "CHAN D PHA - Channel D phase"
+
+class _Waveform(_PerOutputMode):
+    "waveform"
+    SI = ModeCommand('Sine', 'SINE')
+    RA = ModeCommand('Ramp', 'RAMP')
+    TR = ModeCommand('Triangle', 'TRG')
+    SQ = ModeCommand('Square', 'SQR')
+    NS = ModeCommand('Noise', 'NOIS')
+    DC = ModeCommand('DC', 'DC')
+
+class WaveformA(_Waveform):
+    "CHAN A FORM - Channel A waveform"
+    _prefix = "WFA"
+class WaveformB(_Waveform):
+    "CHAN B FORM - Channel B waveform"
+    _prefix = "WFB"
+class WaveformC(_Waveform):
+    "CHAN C FORM - Channel C waveform"
+    _prefix = "WFC"
+class WaveformD(_Waveform):
+    "CHAN D FORM - Channel D waveform"
+    _prefix = "WFD"
+    
+
+class _Destination(_PerOutputMode):
+    "Destination"
+    AM = ModeCommand('AM', 'AM')
+    FM = ModeCommand('FM', 'FM')
+    PM = ModeCommand('PM', 'PM')
+    DS = ModeCommand('DS', 'DS')
+    PU = ModeCommand('PU', 'PU')
+    OC1 = ModeCommand('OC1', 'OC1')
+    OC2 = ModeCommand('OC2', 'OC2')
+    OF = ModeCommand('OF', 'OF')
     
 class HP8904Device(AbstractGPIBDevice):
     _accepts = ["^(?P<model>HP *8904A).*$",]
--- a/pygpibtoolkit/pygpib.py	Thu Mar 26 20:56:18 2009 +0100
+++ b/pygpibtoolkit/pygpib.py	Mon Mar 30 21:32:14 2009 +0200
@@ -265,7 +265,7 @@
             return "%s"%self._values.index(value[0])
         return "" # XXX
 
-class WriteOnlyMode(AbstractValue):
+class SimpleMode(AbstractCommand):
     """
     A device mode which can only be wrote (there is no way for reading
     the device mode), thus it must be kept in cache (and we must know
@@ -278,6 +278,12 @@
             if isinstance(cmd, ModeCommand):
                 self._cmds.append(cmdname)
 
+    def build_set_cmd(self, value):
+        assert value in self._cmds
+        return value, value
+
+
+class WriteOnlyMode(SimpleMode):
     def get_value_from_device(self, device):
         raise ValueError("can't retrieve mode value from device")
         
@@ -287,16 +293,8 @@
         instance._cache[self.__class__.__name__] = value
         return getattr(instance, value)
 
-    def __get__(self, instance, owner):
-        if instance is None:
-            return self
-        return instance._get(self.__class__.__name__)
 
-    def build_set_cmd(self, value):
-        assert value in self._cmds
-        return value, value
-
-class Mode(WriteOnlyMode):
+class Mode(SimpleMode):
     _DATA_BLOCK = None
     _key = None
 

mercurial