summaryrefslogtreecommitdiffstats
path: root/lab_control/jds6600.py
diff options
context:
space:
mode:
Diffstat (limited to 'lab_control/jds6600.py')
-rw-r--r--lab_control/jds6600.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/lab_control/jds6600.py b/lab_control/jds6600.py
index 5ada6cf..4ab4955 100644
--- a/lab_control/jds6600.py
+++ b/lab_control/jds6600.py
@@ -41,10 +41,10 @@ class JDS6600(FunctionGenerator):
"""
self._port.close()
- def _queryOnOff(self) -> list[str, str]:
- # response format: ":r20=0,0."
- response = self._sendRequest("r20")
- return [response[5], response[7]]
+ def _query(self, opcode: str) -> list[str]:
+ # response format: ":{opcode}={v1},{v2}."
+ response = self._sendRequest(opcode)
+ return response[5:-1].split(",")
def _sendRequest(self, opcode: str, args: str="") -> str:
request = f":{opcode}={args}.\r\n"
@@ -55,14 +55,14 @@ class JDS6600(FunctionGenerator):
def setOn(self, channel: int) -> None:
_checkChannel(channel)
- state = self._queryOnOff()
+ state = self._query("r20")
state[channel - 1] = "1"
self._sendRequest("w20", f"{state[0]},{state[1]}")
def setOff(self, channel: int) -> None:
_checkChannel(channel)
- state = self._queryOnOff()
+ state = self._query("r20")
state[channel - 1] = "0"
self._sendRequest("w20", f"{state[0]},{state[1]}")
@@ -70,9 +70,15 @@ class JDS6600(FunctionGenerator):
_checkChannel(channel)
_checkArg(frequency, 0.0, 60e6)
- opcode = f"w{23 + channel - 1}"
+ opcode = 23 + channel - 1
arg = int(frequency * 100.0)
- self._sendRequest(opcode, str(arg))
+ self._sendRequest(f"w{opcode}", f"{arg},0")
+
+ # JDS6600 has been observed to sometimes incorrectly
+ # ignore the frequency and set to 0 instead
+ actual = self._query(f"r{opcode}")[0]
+ if actual != arg:
+ self._sendRequest(f"w{opcode}", f"{arg},0")
def setAmplitude(self, channel: int, amplitude: float) -> None:
_checkChannel(channel)