From 57d765c810ecd654e998e827f054fda72d1ab372 Mon Sep 17 00:00:00 2001 From: Riley King Date: Fri, 5 Sep 2025 13:13:05 +1000 Subject: [PATCH 1/3] Added a slow write function. `save.*` now uses the slow write function. --- src/fixate/drivers/pps/siglent_spd_3303X.py | 22 ++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/fixate/drivers/pps/siglent_spd_3303X.py b/src/fixate/drivers/pps/siglent_spd_3303X.py index dce8c83b..e0b124e0 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", self._write_slow, "*SAV 1"), + ("save.group2", self._write_slow, "*SAV 2"), + ("save.group3", self._write_slow, "*SAV 3"), + ("save.group4", self._write_slow, "*SAV 4"), + ("save.group5", self._write_slow, "*SAV 5"), # Recall commands ("recall.group1", self.write, "*RCL 1"), ("recall.group2", self.write, "*RCL 2"), @@ -205,6 +205,18 @@ def _write(self, data): time.sleep(0.02 + len(cmd) / 6000) self._is_error() + def _write_slow(self, base_str, *args, **kwargs): + """ + The SPD3303X is very slow at saving the current configuration to memory + To correct this, an extra 30 ms is added to the delay between commands. + This function should be identical to _write with the exception of an additional 0.03 s in wait time + """ + cmds = self._format_string(base_str, **kwargs) + for cmd in cmds.split(";"): + self.instrument.write(cmd) + time.sleep(0.02 + len(cmd) / 6000 + 0.03) + self._is_error() + @staticmethod def _parse_errors(error_response): """Parse error string for error code and message From c2e25c24cb94017276e27b8304ad2f5b7ab8bede Mon Sep 17 00:00:00 2001 From: Riley King Date: Fri, 12 Sep 2025 08:24:54 +1000 Subject: [PATCH 2/3] Changed aproach to use a lambda and kwarg delay to add an extra 30 ms to SPD3303X `save.*` commands --- src/fixate/drivers/pps/siglent_spd_3303X.py | 26 ++++++--------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/fixate/drivers/pps/siglent_spd_3303X.py b/src/fixate/drivers/pps/siglent_spd_3303X.py index e0b124e0..4af30db4 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_slow, "*SAV 1"), - ("save.group2", self._write_slow, "*SAV 2"), - ("save.group3", self._write_slow, "*SAV 3"), - ("save.group4", self._write_slow, "*SAV 4"), - ("save.group5", self._write_slow, "*SAV 5"), + ("save.group1", lambda cmd: self._write(cmd, delay=0.5), "*SAV 1"), + ("save.group2", lambda cmd: self._write(cmd, delay=0.5), "*SAV 2"), + ("save.group3", lambda cmd: self._write(cmd, delay=0.5), "*SAV 3"), + ("save.group4", lambda cmd: self._write(cmd, delay=0.5), "*SAV 4"), + ("save.group5", lambda cmd: self._write(cmd, delay=0.5), "*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,19 +202,7 @@ def _write(self, data): """ for cmd in data.split(";"): self.instrument.write(cmd) - time.sleep(0.02 + len(cmd) / 6000) - self._is_error() - - def _write_slow(self, base_str, *args, **kwargs): - """ - The SPD3303X is very slow at saving the current configuration to memory - To correct this, an extra 30 ms is added to the delay between commands. - This function should be identical to _write with the exception of an additional 0.03 s in wait time - """ - cmds = self._format_string(base_str, **kwargs) - for cmd in cmds.split(";"): - self.instrument.write(cmd) - time.sleep(0.02 + len(cmd) / 6000 + 0.03) + time.sleep(0.02 + delay + len(cmd) / 6000) self._is_error() @staticmethod From 3969589388a724507ed7aa0f03855d203fe522cc Mon Sep 17 00:00:00 2001 From: Riley King Date: Fri, 12 Sep 2025 08:43:37 +1000 Subject: [PATCH 3/3] Updated timing for `save.*` to be 100 ms because the SPD3303X is junk --- src/fixate/drivers/pps/siglent_spd_3303X.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/fixate/drivers/pps/siglent_spd_3303X.py b/src/fixate/drivers/pps/siglent_spd_3303X.py index 4af30db4..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", lambda cmd: self._write(cmd, delay=0.5), "*SAV 1"), - ("save.group2", lambda cmd: self._write(cmd, delay=0.5), "*SAV 2"), - ("save.group3", lambda cmd: self._write(cmd, delay=0.5), "*SAV 3"), - ("save.group4", lambda cmd: self._write(cmd, delay=0.5), "*SAV 4"), - ("save.group5", lambda cmd: self._write(cmd, delay=0.5), "*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"),