User manual

Programmer’s Guide Page 52 of 66
The value of delayTime positions exactly the left edge of the display (or the exact nominal beginning of the
waveform) with respect to the “stable” trigger time, which is the real reference point. We define the time 'trigger
time + delayTime' as the time origin for the waveform, which is equivalent to saying that the trigger always
occurs exactly at the time -delayTime.
The first data point of the waveform is defined as the last acquired data point before the time origin. It is indexed
with i = 0 in the formula below.
NOTE: It is important to realize that if a single segment is read (e.g. with AcqrsD1_readData) the first data point
will be dataArray[readPar.indexFirstPoint] and that this is not necessarily the first point given.
The exact position of the first data point with respect to the time origin is a negative number horPos. It is by
definition in the range [-sampInterval, 0].
The time between the trigger and the first data point hOffset need not be recorded since it can always be
computed as delayTime + horPos. Note: delayTime + horPos < delayTime by definition.
In order to obtain a very stable image, even in a highly zoomed display, the user only needs to position the
acquired data points with the aid of horPos, by using the following formula for the x-position of point i with
respect to the left edge of the display:
x[i] = horPos + i * sampInterval
3.15. Sequence Acquisitions
For digitizers in Sequence acquisition mode, multiple waveforms are acquired autonomously, with a single start
command AcqrsD1_acquire. Whenever a trigger is received, the current acquisition segment is normally terminated.
The digitizer then automatically initializes another acquisition into the next memory segment, until all requested
segments are filled.
3.16. Time stamps
The U1071A and 10-bit-FAMILY of digitizers implement a time stamp to measure the time of the trigger for each
acquisition segment. These time stamps can be used to calculate the time between any two triggers for any pair of
triggers over multiple acquisitions.
The other, older Acqiris digitizers feature a 'time stamp' in order to measure the time between the triggers of
consecutive segments in the same acquisition. In fact, the time stamp counter is started when the Sequence
acquisition is started, and keeps counting during the entire sequence. The difference between the time stamps of any
pair of (not necessarily adjacent) segments is the time between their respective triggers.
The time stamp value is returned as a 64-bit integer, in units of picoseconds, with a resolution identical to that of the
trigger time interpolator (see the appropriate product User manual). The waveform readout function
AcqrsD1_readData returns the time stamp value as 2 32-bit values. In order to do time differences, you should
transform them into a 64-bit integer:
In Visual C/C++, use the 64-integer __int64 as follows:
__int64 timeStamp = timeStampHi;
timeStamp = timeStamp<<32 + (unsigned long)timeStampLo;
Arithmetic operations between such integers can be done as with shorter integers.
You also can convert a time stamp difference to an extended floating point number, and do arithmetic operations
as with other variables:
double deltaTime = (double)(timeStamp previousStamp);
In Visual Basic, use a decimal Variant variable as follows:
Const Two16 As Variant = 65536
Const Two32 As Variant = Two16 * Two16
Dim timeStamp As Variant, previousStamp as Variant
Dim timeDiff as Variant, xStampLo as Variant
...
If (tStampLo < 0) Then
xStampLo = Two32 Abs(tStampLo)
Else