diff options
Diffstat (limited to 'lab_control/jds6600.py')
-rw-r--r-- | lab_control/jds6600.py | 22 |
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) |