diff options
Diffstat (limited to 'qolab/hardware/scope')
-rw-r--r-- | qolab/hardware/scope/sds1104x.py | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/qolab/hardware/scope/sds1104x.py b/qolab/hardware/scope/sds1104x.py index 4fe52aa..2a78857 100644 --- a/qolab/hardware/scope/sds1104x.py +++ b/qolab/hardware/scope/sds1104x.py @@ -3,8 +3,8 @@ Created by Eugeniy E. Mikhailov 2021/11/29 """ from qolab.hardware.scope import ScopeSCPI +from qolab.hardware.scpi import response2numStr from qolab.data.trace import Trace -import re import numpy as np class SDS1104X(ScopeSCPI): @@ -17,26 +17,13 @@ class SDS1104X(ScopeSCPI): self.numberOfChannels = 4 self.maxRequiredPoints = 1000; # desired number of points per channel, can return twice more - def response2numStr(self, strIn, firstSeparator=None, unit=None): - # A typical reply of Siglent is in the form 'TDIV 2.00E-08S' - # i.e. "<prefix><firstSeparator><numberString><unit> - # prefix='TDIV', firstSeparator=' ', numberString='2.00E-08', unit='S' - # this function parses the reply - spltStr = re.split(firstSeparator, strIn) - prefix = spltStr[0] - rstr = spltStr[1] - spltStr = re.split(unit, rstr) - numberString = spltStr[0] - unit = spltStr[1] - return (prefix, numberString, unit) - def mean(self, chNum): # get mean on a specific channel calculated by scope # PAVA stands for PArameter VAlue qstr = f'C{chNum}:PAVA? MEAN' rstr = self.query(qstr); # reply is in the form 'C1:PAVA MEAN,3.00E-02V' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=',', unit='V') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=',', unit='V') return(float(numberString)) def getAvailableNumberOfPoints(self, chNum): @@ -46,13 +33,13 @@ class SDS1104X(ScopeSCPI): qstr = f'SAMPLE_NUM? C{chNum}' rstr = self.query(qstr) # reply is in the form 'SANU 7.00E+01pts' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='pts') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='pts') return(int(float(numberString))) def getSampleRate(self): rstr = self.query('SAMPLE_RATE?'); # expected reply is like 'SARA 1.00E+09Sa/s' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='Sa/s') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='Sa/s') return(int(float(numberString))) def calcSparsingAndNumPoints(self, availableNpnts=None, maxRequiredPoints=None): @@ -107,28 +94,28 @@ class SDS1104X(ScopeSCPI): qstr = f'C{chNum}:VDIV?' rstr = self.query(qstr) # expected reply to query: 'C1:VDIV 1.04E+00V' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='V') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='V') return(float(numberString)) def getChanOffset(self, chNum): qstr = f'C{chNum}:OFST?' rstr = self.query(qstr) # expected reply to query: 'C1:OFST -1.27E+00V' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='V') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='V') return(float(numberString)) def getTimePerDiv(self): qstr = f'TDIV?' rstr = self.query(qstr) # expected reply to query: 'TDIV 2.00E-08S' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='S') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='S') return(float(numberString)) def getTrigDelay(self): qstr = f'TRIG_DELAY?' rstr = self.query(qstr) # expected reply to query: 'TRDL -0.00E+00S' - prefix, numberString, unit = self.response2numStr(rstr, firstSeparator=' ', unit='S') + prefix, numberString, unit = response2numStr(rstr, firstSeparator=' ', unit='S') return(float(numberString)) |