diff options
-rw-r--r-- | tektronix.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/tektronix.py b/tektronix.py index 4577d00..ddf0274 100644 --- a/tektronix.py +++ b/tektronix.py @@ -20,6 +20,8 @@ preamble_fields = {'BYT_NR': int, # data width for waveform 'YUNIT' : str, 'NR_FR' : int } +header_regex = re.compile('(?::HEADER ){0,1}(\d)') + def get_dtype(preamble): """Returns the numpy dtype for the raw waveform data given the preamble.""" if preamble['BYT_OR'] == 'MSB': @@ -91,10 +93,15 @@ class TekScope(object): """Trigger and acquire a new waveform.""" self.send('acquire:state run\n') + acquire_regex = re.compile('(?::ACQUIRE:STATE ){0,1}(\d)') + + while int(acquire_regex.match(self.query('acquire:state?')).group(1)): + pass + def get_preamble(self, channel): """Returns a dictionary containing information about the waveform format for a channel.""" - header = self.query('header?\n') + header = int(header_regex.match(self.query('header?\n')).group(1)) # turn header on so that we know preamble field names self.send('header 1\n') @@ -110,14 +117,14 @@ class TekScope(object): preamble[key] = preamble_fields[key](value) # reset header format and data:source - self.send(header) + self.send('header %i' % header) self.send(source) return preamble def get_active_channels(self): """Returns a list of the active (displayed) channel numbers.""" - header = self.query('header?\n') + header = int(header_regex.match(self.query('header?\n')).group(1)) self.send('header 1\n') @@ -131,7 +138,7 @@ class TekScope(object): if state != 0: channels.append(ch) - self.send(header) + self.send('header %i' % header) return channels @@ -139,7 +146,7 @@ class TekScope(object): """Returns the waveform from channel as a numpy array. If dtype is specified, the function does not need to query the scope for the data format which will be much quicker.""" - header = self.query('header?\n') + header = int(header_regex.match(self.query('header?\n')).group(1)) self.send('header 0\n') @@ -173,7 +180,7 @@ class TekScope(object): if eom != '\n': raise Exception("eom != '\n'") - self.send(header) + self.send('header %i' % header) return waveform @@ -211,12 +218,14 @@ if __name__ == '__main__': for run in range(options.nruns): if options.nruns > 1: - fileid = str(run).zfill(int(math.log10(options.nruns))+1) + fileid = '_' + str(run).zfill(int(math.log10(options.nruns))+1) else: fileid = '' filename = root + fileid + ext + print 'saving to %s' % filename + t0 = time.time() with h5py.File(filename, 'w') as f: |