diff options
Diffstat (limited to 'qolab/hardware')
-rw-r--r-- | qolab/hardware/scope/rigolds1054z.py | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/qolab/hardware/scope/rigolds1054z.py b/qolab/hardware/scope/rigolds1054z.py index 8706cf1..d3dbd3c 100644 --- a/qolab/hardware/scope/rigolds1054z.py +++ b/qolab/hardware/scope/rigolds1054z.py @@ -19,7 +19,6 @@ logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) - class RigolDS1054z(ScopeSCPI): """Rigol 1054 scope""" @@ -174,19 +173,19 @@ class RigolDS1054z(ScopeSCPI): <yreference>: the vertical reference position in the Y direction. """ rawChanCfg = { - 'format': int(preamble[0]), - 'type': int(preamble[1]), - 'availableNpnts': int(preamble[2]), - 'Navrg': int(preamble[3]), - 'xincrement': float(preamble[4]), - 'xorigin': float(preamble[5]), - 'xreference': int(preamble[6]), - 'yincrement': float(preamble[7]), - 'yorigin': int(preamble[8]), - 'yreference': int(preamble[9]), - } + "format": int(preamble[0]), + "type": int(preamble[1]), + "availableNpnts": int(preamble[2]), + "Navrg": int(preamble[3]), + "xincrement": float(preamble[4]), + "xorigin": float(preamble[5]), + "xreference": int(preamble[6]), + "yincrement": float(preamble[7]), + "yorigin": int(preamble[8]), + "yreference": int(preamble[9]), + } logger.info(f"rawChanCfg: {rawChanCfg}") - availableNpnts = rawChanCfg['availableNpnts'] + availableNpnts = rawChanCfg["availableNpnts"] wfRaw = np.zeros(availableNpnts, dtype=np.uint8) maxreadable = 250_000 # the maximum number of bytes readable in one go chunk_size = 70_000 # unfortunately large chunk size prone to read errors @@ -198,7 +197,7 @@ class RigolDS1054z(ScopeSCPI): while strt <= availableNpnts: stp = strt - 1 + chunk_size stp = min(stp, availableNpnts) - chunk_size = stp-strt+1 + chunk_size = stp - strt + 1 # reading requested number of points in chunks self.write(f":WAVeform:STARt {strt}") self.write(f":WAVeform:STOP {stp}") @@ -215,9 +214,13 @@ class RigolDS1054z(ScopeSCPI): logger.info("Got empty chunk. Redoing.") continue # we need to repeat chunk read if len(wfRawChunk) != chunk_size: - logger.info("Expected chunk with length" + - f" {chunk_size} but got {len(wfRawChunk)}") - logger.info(f"Current pointers are {strt=} {stp=} with {chunk_size=}") + logger.info( + "Expected chunk with length" + + f" {chunk_size} but got {len(wfRawChunk)}" + ) + logger.info( + f"Current pointers are {strt=} {stp=} with {chunk_size=}" + ) logger.info("Redoing, chunk reading.") continue # we need to repeat chunk read wfRaw[strt - 1 : stp] = wfRawChunk @@ -238,7 +241,9 @@ class RigolDS1054z(ScopeSCPI): logger.info(f"Detected recoverable {err}") errCnt += 1 errorProneChunkSize.append(chunk_size) - logger.debug(f"Visa error count is {errCnt} while reading raw chunk the scope") + logger.debug( + f"Visa error count is {errCnt} while reading raw chunk the scope" + ) logger.debug(f"Current pointers are {strt=} {stp=} with {chunk_size=}") if len(errorFreeChunkSize) > 10: chunk_size = int(np.mean(errorFreeChunkSize)) @@ -256,7 +261,11 @@ class RigolDS1054z(ScopeSCPI): Npnts, availableNpnts, maxRequiredPoints, - ) = calcSparsingAndNumPoints(availableNpnts=availableNpnts, maxRequiredPoints=maxRequiredPoints) + ) = calcSparsingAndNumPoints( + availableNpnts=availableNpnts, maxRequiredPoints=maxRequiredPoints + ) + rawChanCfg["Npnts"] = Npnts + rawChanCfg["sparsing"] = sparsing if not decimate and sparsing > 1: wfRaw = wfRaw[::sparsing] @@ -332,9 +341,7 @@ class RigolDS1054z(ScopeSCPI): maxRequiredPoints=maxRequiredPoints, decimate=decimate, ) - t = self.getTimeTrace( - rawChanCfg - ) + t = self.getTimeTrace(rawChanCfg) tr = TraceXY(f"Ch{chNum}") tr.x = t tr.y = wfVoltage |