SUPERSEDED: please see new link: Tek waveform capture
All the functionality of the following files, and more, should
be available on the more general Tek waveform capture
page. The following are the old files, in the interests of keeping old
links working, showing the process used for making the files, and
keeping old versions in case of regression that I haven't detected yet!
'http://INSTRUMENT.INTERNET.ADDRESS/getwfm.isf?command=select:ch1 on&command=save:waveform:fileformat internal&wfmsend=Get'
. One can also use
a webbrowser to the instrument's address, to download the file
manually.
x,y
and header data.
Full invocation is [x,y,h] = read_tekisf('filename.isf')
. This is
a modification of someone else's file from `matlab central', as described in the
file.
When getting waveform data from the TDS3052 web interface, the three formats available are: SPREADSHEET, MATHCAD, INTERNAL.
Spreadsheet has been used by me up to now as being the safest bet. it has just two comma-separated variables per line in ascii format: time and value; the time is zero at the trigger point. It takes a few hundred kiB for the 10000-point waveform, depending on the required number of characters to display the range of numbers. It takes tens of seconds to transfer these files by ethernet (obviously a minute fraction of the potential speed, perhaps due to slow processing?).
Mathcad format gets moderate saving in size by specifying just the
Y-data, the timepoints being specified as a sample period and
a zero-point (trigger point).
From the Tektronix Programmer Manual (about the Mathcad format):
"If you are writing a MathCad program, you should be aware that
the TDS–MathCad file has the following features:
Until this manual was found, this format was perceived as having
the problem of not storing the trigger point, something that can
be quite useful when plotting multiple curves of impulse events
together, later.
Still, the Mathcad format takes a long time to transfer, and
doesn't save an awful lot on space.
* ASCII format
* first four values contain header information:
- first header value holds the TDS record length
- second header value holds time, in seconds, between samples
- third header value holds the trigger position
(expressed as an index in the data position)
- fourth header value refers to the fractional trigger position
* delimiters are carriage returns"
[actually, they're CRLF]
The `internal' format is often *much* smaller: e.g. 20kiB rather than 136kiB for mathcad and 240kiB for csv, in a particular case (PD calibrator impulse). It contains all the information of the other two (binary format) and some headers about instrument settings. The small files come very quickly (perhaps even quicker rate than the others -- haven't properly measured, but it's hardly a delay at all), so it is well worth using this format for getting multiple measurements in the lab. Therefore an hour or more of searching was done to find a good way of converting this format to useable data.
Interpreters for a `Tek[tronix] internal format' were found, but many did not work. It seems that `internal' format, and the file extensions .wfm (waveform) and .isf (internal save format?) are broad names for formats that differ between many ages and models of instrument.
Two scripts that sounded promising were: wfm_ascii_dpo.m
and wfmread.m
from matlab central.
More information can be found by searching for `wfm' as a file format.
These two failed, not understanding the header data of the output from
the TDS3052.
Searching on tek.com's 'DOWNLOAD FINDER' gave some Sparc and m$dos-win32 binaries, of even possibly 1990s vintage, of which the win32 ones were tried under wine and initially failed, apparently also not liking the format.
Searching the site for
waveform converter tds3000
gave fewer and better results:
cnvrtwfm_2008.06.09.13.42.02_5355_EN.exe -l file.isf
worked, including under wine, to do a quick conversion from the
internal format to spreadsheet `file.csv'.
But how stupid of them not to provide the source code for use on other systems: I don't really want to have to get internal format, emulate a dos system to run a program to convert the file to 20000 ascii values, then interpret these back into octave or matlab: it's ugly.
Knowing now that the TDS3000 format is often called isf rather than wfm,
a better google search on:
isf file convert OR parse tek OR tektronix tds3000 OR tds3052
gave immediately a Perl module for parsing this `.isf' format
http://search.cpan.org/~razor/Parse-ISF-0.0103/lib/Parse/ISF.pm
:
"Parse::ISF - Parse the ISF file generated by certain models of Tektronix
oscilloscope (TDS 3000, DPO 4000, etc)".
The credits of this Perl module referred partly to a Matlab script that had
not been found on the first search:
http://www.mathworks.com/matlabcentral/fileexchange/6247
.
This was downloaded and worked ok, and was improved (for my uses) by making it
give x,y data immediately, in separate output variables, and implementing
some suggestions from people on the file download site about variable length
header. The result is the m-file near the top of this page.
If only companies making instruments (and general hardware) would provide
details and open source-code / high-level scripts, it would make things a
lot easier for a lot of people!
[an error occurred while processing this directive]
Page started: 2009-05-06
Last change: 2015-07-24