From: Chrissi^
+TMPL " +/00 +000000 LECROY_2_2: TEMPLATE + 8 66 111 +; +; Explanation of the formats of waveforms and their descriptors on the +; LeCroy Digital Oscilloscopes, +; Software Release 44.1.1.1, 94/04/18. +; +; 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 +; +;: ; +; +; where +; +; = position in bytes (decimal offset) of the variable, +; relative to the beginning of the block. +; +; = name of the variable. +; +; = string up to 16-character name +; terminated with a null byte +; byte 8-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 : +; +< 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> RESERVED3: word +<294> RESERVED4: word ; 2 expansion entries +; +<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_ps/div + _1 2_ps/div + _2 5_ps/div + _3 10_ps/div + _4 20_ps/div + _5 50_ps/div + _6 100_ps/div + _7 200_ps/div + _8 500_ps/div + _9 1_ns/div + _10 2_ns/div + _11 5_ns/div + _12 10_ns/div + _13 20_ns/div + _14 50_ns/div + _15 100_ns/div + _16 200_ns/div + _17 500_ns/div + _18 1_us/div + _19 2_us/div + _20 5_us/div + _21 10_us/div + _22 20_us/div + _23 50_us/div + _24 100_us/div + _25 200_us/div + _26 500_us/div + _27 1_ms/div + _28 2_ms/div + _29 5_ms/div + _30 10_ms/div + _31 20_ms/div + _32 50_ms/div + _33 100_ms/div + _34 200_ms/div + _35 500_ms/div + _36 1_s/div + _37 2_s/div + _38 5_s/div + _39 10_s/div + _40 20_s/div + _41 50_s/div + _42 100_s/div + _43 200_s/div + _44 500_s/div + _45 1_ks/div + _46 2_ks/div + _47 5_ks/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 1_uV/div + _1 2_uV/div + _2 5_uV/div + _3 10_uV/div + _4 20_uV/div + _5 50_uV/div + _6 100_uV/div + _7 200_uV/div + _8 500_uV/div + _9 1_mV/div + _10 2_mV/div + _11 5_mV/div + _12 10_mV/div + _13 20_mV/div + _14 50_mV/div + _15 100_mV/div + _16 200_mV/div + _17 500_mV/div + _18 1_V/div + _19 2_V/div + _20 5_V/div + _21 10_V/div + _22 20_V/div + _23 50_V/div + _24 100_V/div + _25 200_V/div + _26 500_V/div + _27 1_kV/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 +; +;========================================================================== +; +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 +; +;========================================================================== +; +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 +; +;========================================================================== +; +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 +" + +