diff --git a/docs/release-notes.rst b/docs/release-notes.rst index c90245d0..f05ffe08 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -20,6 +20,7 @@ Improvements - Sequencer logic now handles exceptions raised on sequence abort. GUI will no longer hang when a test raises an exception during a test abort. - Fix bug where DSOX1202G appeared to hang both the program and scope - LCR Driver now supports instruments reporting as Keysight or Agilent. Newer models of the LCR meter report as Keysight, whereas older models report as Agilent. +- Fixed a bug where the PPS would crash if it was polled too frequently. - Changed tolerances for PPS and DMM tests to more accurately match device accuracy. ************* diff --git a/src/fixate/drivers/pps/siglent_spd_3303X.py b/src/fixate/drivers/pps/siglent_spd_3303X.py index dce8c83b..b807f2bb 100644 --- a/src/fixate/drivers/pps/siglent_spd_3303X.py +++ b/src/fixate/drivers/pps/siglent_spd_3303X.py @@ -24,11 +24,11 @@ def __init__(self, instrument): self.api = [ # Save commands - ("save.group1", self.write, "*SAV 1"), - ("save.group2", self.write, "*SAV 2"), - ("save.group3", self.write, "*SAV 3"), - ("save.group4", self.write, "*SAV 4"), - ("save.group5", self.write, "*SAV 5"), + ("save.group1", lambda cmd: self._write(cmd, delay=0.1), "*SAV 1"), + ("save.group2", lambda cmd: self._write(cmd, delay=0.1), "*SAV 2"), + ("save.group3", lambda cmd: self._write(cmd, delay=0.1), "*SAV 3"), + ("save.group4", lambda cmd: self._write(cmd, delay=0.1), "*SAV 4"), + ("save.group5", lambda cmd: self._write(cmd, delay=0.1), "*SAV 5"), # Recall commands ("recall.group1", self.write, "*RCL 1"), ("recall.group2", self.write, "*RCL 2"), @@ -189,7 +189,7 @@ def _read_value(self, data): self._is_error() return values[0] - def _write(self, data): + def _write(self, data, delay=0.0): """ The SPD3303X cannot respond to visa commands as quickly as some other devices A 20ms delay was found to be reliable for most commands. @@ -202,7 +202,7 @@ def _write(self, data): """ for cmd in data.split(";"): self.instrument.write(cmd) - time.sleep(0.02 + len(cmd) / 6000) + time.sleep(0.02 + delay + len(cmd) / 6000) self._is_error() @staticmethod