diff options
author | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2022-06-14 16:10:21 -0400 |
---|---|---|
committer | Eugeniy E. Mikhailov <evgmik@gmail.com> | 2022-06-14 16:17:56 -0400 |
commit | ce7d347281fd14770963e536662682fd382cbec1 (patch) | |
tree | 662e6c0aa39fe15f44e514471d428c0b1a84a54b /qolab | |
parent | e107251a43b2a91d7dce7147d8b655eae7c23eb7 (diff) | |
download | qolab-ce7d347281fd14770963e536662682fd382cbec1.tar.gz qolab-ce7d347281fd14770963e536662682fd382cbec1.zip |
decimate case is special: increase Npnts to allocate big enough buffer
otherwise everything is slow on Windows
also added self.read() to flash read buffer after query. It seems to be needed on Windows
Diffstat (limited to 'qolab')
-rw-r--r-- | qolab/hardware/scope/sds1104x.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/qolab/hardware/scope/sds1104x.py b/qolab/hardware/scope/sds1104x.py index 6f12042..a812f5f 100644 --- a/qolab/hardware/scope/sds1104x.py +++ b/qolab/hardware/scope/sds1104x.py @@ -75,9 +75,14 @@ class SDS1104X(ScopeSCPI): """ (sparsing, Npnts, availableNpnts, maxRequiredPoints) = self.calcSparsingAndNumPoints(availableNpnts, maxRequiredPoints) + if decimate: + Npnts = availableNpnts # get all of them and decimate later if (sparsing == 1 and Npnts == availableNpnts) or decimate: - # we are getting all of it - cstr = f'WAVEFORM_SETUP NP,0,FP,0,SP,{sparsing}' + # We are getting all points of the trace + # Apparently sparsing has no effect with this command + # and effectively uses SP=1 for any sparsing + # but I want to make sure and force it + cstr = f'WAVEFORM_SETUP NP,0,FP,0,SP,1' # technically when we know Npnts and sparsing # we can use command from the follow up 'else' clause else: @@ -109,7 +114,12 @@ class SDS1104X(ScopeSCPI): qstr = f'C{chNum}:WAVEFORM? DAT2' # expected full reply: 'C1:WF DAT2,#9000000140.........' try: - wfRaw=self.query_binary_values(qstr, datatype='b', header_fmt='ieee', container=np.array, chunk_size=(Npnts+100)) + wfRaw=self.query_binary_values(qstr, datatype='b', header_fmt='ieee', container=np.array, chunk_size=(Npnts+100)) + # somehow on windows there is a lingering empty string + # which we need to flush out + r=self.read() + if r != '': + print(f'UPS. We expected an empty string but got {r=}') trRaw.values = wfRaw.reshape(wfRaw.size,1) if decimate and sparsing != 1: numtaps = 3; # not sure it is the best case |