Skip to content

Instantly share code, notes, and snippets.

@mobilinkd
Created September 30, 2017 17:53
Show Gist options
  • Save mobilinkd/bbf5e756206547a1fbf0d4e634b7443b to your computer and use it in GitHub Desktop.
Save mobilinkd/bbf5e756206547a1fbf0d4e634b7443b to your computer and use it in GitHub Desktop.
TMPL "
/00
000000 WAVEACE: TEMPLATE
8 66 111
;
; Explanation of the formats of waveforms and their descriptors on the
; LeCroy Digital Oscilloscopes,
; Software Release 8.1.0, 11/03/06.
;
; A descriptor and/or a waveform consists of one or several logical data blocks
; whose formats are explained below.
; Usually, complete waveforms are read: at the minimum they consist of
; the basic descriptor block WAVEDESC
; a data array block.
; Some more complex waveforms, e.g. Extrema data or the results of a Fourier
; transform, may contain several data array blocks.
; When there are more blocks, they are in the following sequence:
; the basic descriptor block WAVEDESC
; the history text descriptor block USERTEXT (may or may not be present)
; the time array block (for RIS and sequence acquisitions only)
; data array block
; auxiliary or second data array block
;
; In the following explanation, every element of a block is described by a
; single line in the form
;
; <byte position> <variable name>: <variable type> ; <comment>
;
; where
;
; <byte position> = position in bytes (decimal offset) of the variable,
; relative to the beginning of the block.
;
; <variable name> = name of the variable.
;
; <variable type> = string up to 16-character name
; terminated with a null byte
; byte 08-bit signed data value
; word 16-bit signed data value
; long 32-bit signed data value
; float 32-bit IEEE floating point value
; with the format shown below
; 31 30 .. 23 22 ... 0 bit position
; s exponent fraction
; where
; s = sign of the fraction
; exponent = 8 bit exponent e
; fraction = 23 bit fraction f
; and the final value is
; (-1)**s * 2**(e-127) * 1.f
; double 64-bit IEEE floating point value
; with the format shown below
; 63 62 .. 52 51 ... 0 bit position
; s exponent fraction
; where
; s = sign of the fraction
; exponent = 11 bit exponent e
; fraction = 52 bit fraction f
; and the final value is
; (-1)**s * 2**(e-1023) * 1.f
; enum enumerated value in the range 0 to N
; represented as a 16-bit data value.
; The list of values follows immediately.
; The integer is preceded by an _.
; time_stamp double precision floating point number,
; for the number of seconds and some bytes
; for minutes, hours, days, months and year.
;
; double seconds (0 to 59)
; byte minutes (0 to 59)
; byte hours (0 to 23)
; byte days (1 to 31)
; byte months (1 to 12)
; word year (0 to 16000)
; word unused
; There are 16 bytes in a time field.
; data byte, word or float, depending on the
; read-out mode reflected by the WAVEDESC
; variable COMM_TYPE, modifiable via the
; remote command COMM_FORMAT.
; text arbitrary length text string
; (maximum 160)
; unit_definition a unit definition consists of a 48 character
; ASCII string terminated with a null byte
; for the unit name.
;
;==========================================================================
;
WAVEDESC: BLOCK
;
; Explanation of the wave descriptor block WAVEDESC;
;
;
< 0> DESCRIPTOR_NAME: string ; the first 8 chars are always WAVEDESC
;
< 16> TEMPLATE_NAME: string
;
< 32> COMM_TYPE: enum ; chosen by remote command COMM_FORMAT
_0 byte
_1 word
endenum
;
< 34> COMM_ORDER: enum
_0 HIFIRST
_1 LOFIRST
endenum
;
;
; The following variables of this basic wave descriptor block specify
; the block lengths of all blocks of which the entire waveform (as it is
; currently being read) is composed. If a block length is zero, this
; block is (currently) not present.
;
; Blocks and arrays that are present will be found in the same order
; as their descriptions below.
;
;BLOCKS :
;
< 36> WAVE_DESCRIPTOR: long ; length in bytes of block WAVEDESC
< 40> USER_TEXT: long ; length in bytes of block USERTEXT
< 44> RES_DESC1: long ;
;
;ARRAYS :
;
< 48> TRIGTIME_ARRAY: long ; length in bytes of TRIGTIME array
;
< 52> RIS_TIME_ARRAY: long ; length in bytes of RIS_TIME array
;
< 56> RES_ARRAY1: long ; an expansion entry is reserved
;
< 60> WAVE_ARRAY_1: long ; length in bytes of 1st simple
; data array. In transmitted waveform,
; represent the number of transmitted
; bytes in accordance with the NP
; parameter of the WFSU remote command
; and the used format (see COMM_TYPE).
;
< 64> WAVE_ARRAY_2: long ; length in bytes of 2nd simple
; data array
;
< 68> RES_ARRAY2: long
< 72> RES_ARRAY3: long ; 2 expansion entries are reserved
;
; The following variables identify the instrument
;
< 76> INSTRUMENT_NAME: string
;
< 92> INSTRUMENT_NUMBER: long
;
< 96> TRACE_LABEL: string ; identifies the waveform.
;
<112> RESERVED1: word
<114> RESERVED2: word ; 2 expansion entries
;
; The following variables describe the waveform and the time at
; which the waveform was generated.
;
<116> WAVE_ARRAY_COUNT: long ; number of data points in the data
; array. If there are two data
; arrays (FFT or Extrema), this number
; applies to each array separately.
;
<120> PNTS_PER_SCREEN: long ; nominal number of data points
; on the screen
;
<124> FIRST_VALID_PNT: long ; count of number of points to skip
; before first good point
; FIRST_VALID_POINT = 0
; for normal waveforms.
;
<128> LAST_VALID_PNT: long ; index of last good data point
; in record before padding (blanking)
; was started.
; LAST_VALID_POINT = WAVE_ARRAY_COUNT-1
; except for aborted sequence
; and rollmode acquisitions
;
<132> FIRST_POINT: long ; for input and output, indicates
; the offset relative to the
; beginning of the trace buffer.
; Value is the same as the FP parameter
; of the WFSU remote command.
;
<136> SPARSING_FACTOR: long ; for input and output, indicates
; the sparsing into the transmitted
; data block.
; Value is the same as the SP parameter
; of the WFSU remote command.
;
<140> SEGMENT_INDEX: long ; for input and output, indicates the
; index of the transmitted segment.
; Value is the same as the SN parameter
; of the WFSU remote command.
;
<144> SUBARRAY_COUNT: long ; for Sequence, acquired segment count,
; between 0 and NOM_SUBARRAY_COUNT
;
<148> SWEEPS_PER_ACQ: long ; for Average or Extrema,
; number of sweeps accumulated
; else 1
;
<152> POINTS_PER_PAIR: word ; for Peak Dectect waveforms (which always
; include data points in DATA_ARRAY_1 and
; min/max pairs in DATA_ARRAY_2).
; Value is the number of data points for
; each min/max pair.
;
<154> PAIR_OFFSET: word ; for Peak Dectect waveforms only
; Value is the number of data points by
; which the first min/max pair in
; DATA_ARRAY_2 is offset relative to the
; first data value in DATA_ARRAY_1.
;
<156> VERTICAL_GAIN: float
;
<160> VERTICAL_OFFSET: float ; to get floating values from raw data :
; VERTICAL_GAIN * data - VERTICAL_OFFSET
;
<164> MAX_VALUE: float ; maximum allowed value. It corresponds
; to the upper edge of the grid.
;
<168> MIN_VALUE: float ; minimum allowed value. It corresponds
; to the lower edge of the grid.
;
<172> NOMINAL_BITS: word ; a measure of the intrinsic precision
; of the observation: ADC data is 8 bit
; averaged data is 10-12 bit, etc.
;
<174> NOM_SUBARRAY_COUNT: word ; for Sequence, nominal segment count
; else 1
;
<176> HORIZ_INTERVAL: float ; sampling interval for time domain
; waveforms
;
<180> HORIZ_OFFSET: double ; trigger offset for the first sweep of
; the trigger, seconds between the
; trigger and the first data point
;
<188> PIXEL_OFFSET: double ; needed to know how to display the
; waveform
;
<196> VERTUNIT: unit_definition ; units of the vertical axis
;
<244> HORUNIT: unit_definition ; units of the horizontal axis
;
<292> HORIZ_UNCERTAINTY: float ; uncertainty from one acquisition to the
; next, of the horizontal offset in seconds
;
<296> TRIGGER_TIME: time_stamp ; time of the trigger
;
<312> ACQ_DURATION: float ; duration of the acquisition (in sec)
; in multi-trigger waveforms.
; (e.g. sequence, RIS, or averaging)
;
<316> RECORD_TYPE: enum
_0 single_sweep
_1 interleaved
_2 histogram
_3 graph
_4 filter_coefficient
_5 complex
_6 extrema
_7 sequence_obsolete
_8 centered_RIS
_9 peak_detect
endenum
;
<318> PROCESSING_DONE: enum
_0 no_processing
_1 fir_filter
_2 interpolated
_3 sparsed
_4 autoscaled
_5 no_result
_6 rolling
_7 cumulative
endenum
;
<320> RESERVED5: word ; expansion entry
;
<322> RIS_SWEEPS: word ; for RIS, the number of sweeps
; else 1
;
; The following variables describe the basic acquisition
; conditions used when the waveform was acquired
;
<324> TIMEBASE: enum
_0 1_ns/div
_1 2.5_ns/div
_2 5_ns/div
_3 10_ns/div
_4 25_ns/div
_5 50_ns/div
_6 100_ns/div
_7 250_ns/div
_8 500_ns/div
_9 1_us/div
_10 2.5_us/div
_11 5_us/div
_12 10_us/div
_13 25_us/div
_14 50_us/div
_15 100_us/div
_16 250_us/div
_17 500_us/div
_18 1_ms/div
_19 2.5_ms/div
_20 5_ms/div
_21 10_ms/div
_22 25_ms/div
_23 50_ms/div
_24 100_ms/div
_25 250_ms/div
_26 500_ms/div
_27 1_s/div
_28 2.5_s/div
_29 5_s/div
_30 10_s/div
_31 25_s/div
_32 50_s/div
_100 EXTERNAL
endenum
;
<326> VERT_COUPLING: enum
_0 DC_50_Ohms
_1 ground
_2 DC_1MOhm
_3 ground
_4 AC_1MOhm
endenum
;
<328> PROBE_ATT: float
;
<332> FIXED_VERT_GAIN: enum
_0 2_mV/div
_1 5_mV/div
_2 10_mV/div
_3 20_mV/div
_4 50_mV/div
_5 100_mV/div
_6 200_mV/div
_7 500_mV/div
_8 1_V/div
_9 2_V/div
_10 5_V/div
_11 10_V/div
endenum
;
<334> BANDWIDTH_LIMIT: enum
_0 off
_1 on
endenum
;
<336> VERTICAL_VERNIER: float
;
<340> ACQ_VERT_OFFSET: float
;
<344> WAVE_SOURCE: enum
_0 CHANNEL_1
_1 CHANNEL_2
_2 CHANNEL_3
_3 CHANNEL_4
_9 UNKNOWN
endenum
;
/00 ENDBLOCK
;
;==========================================================================
;
USERTEXT: BLOCK
;
; Explanation of the descriptor block USERTEXT at most 160 bytes long.
;
;
< 0> TEXT: text ; a list of ASCII characters
;
/00 ENDBLOCK
;
;==========================================================================
;
TRIGTIME: ARRAY
;
; Explanation of the trigger time array TRIGTIME.
; This optional time array is only present with SEQNCE waveforms.
; The following data block is repeated for each segment which makes up
; the acquired sequence record.
;
< 0> TRIGGER_TIME: double ; for sequence acquisitions,
; time in seconds from first
; trigger to this one
;
< 8> TRIGGER_OFFSET: double ; the trigger offset is in seconds
; from trigger to zeroth data point
;
/00 ENDARRAY
;
;==========================================================================
;
RISTIME: ARRAY
;
; Explanation of the random-interleaved-sampling (RIS) time array RISTIME.
; This optional time array is only present with RIS waveforms.
; This data block is repeated for each sweep which makes up the RIS record
;
< 0> RIS_OFFSET: double ; seconds from trigger to zeroth
; point of segment
;
/00 ENDARRAY
;
;==========================================================================
;
DATA_ARRAY_1: ARRAY
;
; Explanation of the data array DATA_ARRAY_1.
; This main data array is always present. It is the only data array for
; most waveforms.
; The data item is repeated for each acquired or computed data point
; of the first data array of any waveform.
;
< 0> MEASUREMENT: data ; the actual format of a data is
; given in the WAVEDESC descriptor
; by the COMM_TYPE variable.
;
/00 ENDARRAY
;
;==========================================================================
;
DATA_ARRAY_2: ARRAY
;
; Explanation of the data array DATA_ARRAY_2.
; This is an optional secondary data array for special types of waveforms:
; Complex FFT imaginary part (real part in DATA_ARRAY_1)
; Extrema floor trace (roof trace in DATA_ARRAY_1)
; Peak Detect min/max pairs (data values in DATA_ARRAY_1)
; In the first 2 cases, there is exactly one data item in DATA_ARRAY_2 for
; each data item in DATA_ARRAY_1.
; In Peak Detect waveforms, there may be fewer data values in DATA_ARRAY_2,
; as described by the variable POINTS_PER_PAIR.
;
< 0> MEASUREMENT: data ; the actual format of a data is
; given in the WAVEDESC descriptor
; by the COMM_TYPE variable.
;
/00 ENDARRAY
;
;==========================================================================
;
SIMPLE: ARRAY
;
; Explanation of the data array SIMPLE.
; This data array is identical to DATA_ARRAY_1. SIMPLE is an accepted
; alias name for DATA_ARRAY_1.
;
< 0> MEASUREMENT: data ; the actual format of a data is
; given in the WAVEDESC descriptor
; by the COMM_TYPE variable.
;
/00 ENDARRAY
;
;==========================================================================
;
DUAL: ARRAY
;
; Explanation of the DUAL array.
; This data array is identical to DATA_ARRAY_1, followed by DATA_ARRAY_2.
; DUAL is an accepted alias name for the combined arrays DATA_ARRAY_1 and
; DATA_ARRAY_2 (e.g. real and imaginary parts of an FFT).
;
< 0> MEASUREMENT_1: data ; data in DATA_ARRAY_1.
;
< 0> MEASUREMENT_2: data ; data in DATA_ARRAY_2.
;
/00 ENDARRAY
;
;
000000 ENDTEMPLATE
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment