diff --git a/docs/release-notes.rst b/docs/release-notes.rst index f67c605..2843ac9 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -25,6 +25,7 @@ Improvements - Created a new FixateError base class for all exceptions raised by fixate to use. It inherits from Exception instead of BaseExcepetion to improve error handling. - DSO Driver function 'waveform_values' now returns a single channels x and y data as two separate lists, without re-acquiring the signal. This function should now be called after performing signal acquisition. +- Invert channel and vtime funcitons implemented in the DSO driver. ************* Version 0.6.4 diff --git a/src/fixate/drivers/dso/agilent_mso_x.py b/src/fixate/drivers/dso/agilent_mso_x.py index 7de7d04..36fce6f 100644 --- a/src/fixate/drivers/dso/agilent_mso_x.py +++ b/src/fixate/drivers/dso/agilent_mso_x.py @@ -54,6 +54,10 @@ def __init__(self, instrument): ("ch2.offset", self.write, "CHAN2:OFFS {value}"), ("ch3.offset", self.write, "CHAN3:OFFS {value}"), ("ch4.offset", self.write, "CHAN4:OFFS {value}"), + ("ch1.invert", self.write, "CHAN1:INV {value:n}"), + ("ch2.invert", self.write, "CHAN2:INV {value:n}"), + ("ch3.invert", self.write, "CHAN3:INV {value:n}"), + ("ch4.invert", self.write, "CHAN4:INV {value:n}"), ("ch1.coupling.ac", self.write, "CHAN1:COUP AC"), ("ch2.coupling.ac", self.write, "CHAN2:COUP AC"), ("ch3.coupling.ac", self.write, "CHAN3:COUP AC"), @@ -124,6 +128,11 @@ def __init__(self, instrument): self.query_after_acquire, "MEAS:VRAT? DISP,{self._store[source1]},{self._store[source2]}", ), + ( + "measure.vtime", + self.query_after_acquire, + "MEAS:VTIM? {time}, CHAN{channel:n}", + ), # Ch1 Measure ("measure.counter.ch1", self.query_after_acquire, "MEAS:COUN? CHAN1"), ("measure.duty.ch1", self.query_after_acquire, "MEAS:DUTY? CHAN1"), diff --git a/src/fixate/drivers/dso/helper.py b/src/fixate/drivers/dso/helper.py index bda2fb7..b3dc928 100644 --- a/src/fixate/drivers/dso/helper.py +++ b/src/fixate/drivers/dso/helper.py @@ -704,6 +704,16 @@ def __init__(self): self.xmax = MeasureAllSources() self.xmin = MeasureAllSources() + def vtime(self, time: float, channel: int): + """ + Return the y value of a channel at the requested time. + """ + raise InstrumentFeatureUnavailable( + "{} not available on this device".format( + inspect.currentframe().f_code.co_name + ) + ) + class MultiSlopes(CallableNoArgs): def __init__(self):