diff options
author | Anthony LaTorre <devnull@localhost> | 2013-04-02 17:48:09 -0500 |
---|---|---|
committer | Anthony LaTorre <devnull@localhost> | 2013-04-02 17:48:09 -0500 |
commit | a698974c40e5d86ecf008ce71d50662368158c5f (patch) | |
tree | d960c31a12dbd3f71bfd264f9049b08db07a14f9 | |
parent | cb9b9ca7f58bf0dc63079c79211bb994bb8f825f (diff) | |
download | lecrunch-a698974c40e5d86ecf008ce71d50662368158c5f.tar.gz lecrunch-a698974c40e5d86ecf008ce71d50662368158c5f.tar.bz2 lecrunch-a698974c40e5d86ecf008ce71d50662368158c5f.zip |
fix saving of header state in a few functions. acquire method now blocks until waveform is acquired.
-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: |