From b17f87f6e9bc938448c5aeef6241a6d1639f17af Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Thu, 26 May 2022 16:41:02 +0200 Subject: Refactored, added peak-to-peak, RMS and frequency measurements --- lab_control/sds1000xe.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'lab_control/sds1000xe.py') diff --git a/lab_control/sds1000xe.py b/lab_control/sds1000xe.py index d86c1c7..c0654e0 100644 --- a/lab_control/sds1000xe.py +++ b/lab_control/sds1000xe.py @@ -14,26 +14,30 @@ class SDS1000XE(Oscilloscope): self._socket.settimeout(SDS1000XE.TIMEOUT) def measureAmplitude(self, channel: int) -> float: + return self._measure(channel, "AMPL") + + def measurePeakToPeak(self, channel: int) -> float: + return self._measure(channel, "PKPK") + + def measureRMS(self, channel: int) -> float: + return self._measure(channel, "RMS") + + def measureFrequency(self, channel: int) -> float: + return self._measure(channel, "FREQ") + + def _measure(self, channel: int, code: str) -> float: assert channel in SDS1000XE.AVAILABLE_CHANNELS - query = f"C{channel}:PAVA? AMPL" + query = f"C{channel}:PAVA? {code}" self._socket.sendall(query.encode()) try: + # TODO add code to regex response = self._socket.recv(4096).decode() - m = re.search(r"C(?P\d):PAVA AMPL,(?P.+)V", response) + m = re.search(r"C(?P\d):PAVA .+,(?P.+)V", response) measurement = float(m.group("rawMeasurement")) - except (TimeoutError, AttributeError) as e: + except TimeoutError as e: measurement = None return measurement - def measurePkToPk(self, channel: int) -> float: - pass - - def measureRMS(self, channel: int) -> float: - pass - - def measureFrequency(self, channel: int) -> float: - pass - -- cgit v1.2.3