User manual
Programmer’s Guide Page 41 of 66
AqReadParameters readParams; // Read Definitions
AqDataDescriptor wfDesc; // Returned (common) waveform values
AqSegmentDescriptorAvg segDesc; // Returned segment values
long channel = 1, nbrSamples = 20000;
double waveformArray[20000];
readParams.dataType = ReadReal64; // Request Volts
readParams.readMode = ReadModeAvgW;
readParams.nbrSegments = 1;
readParams.firstSampleInSeg = 0;
readParams.segmentOffset = nbrSamples;
readParams.firstSegment = 0; // Read first segment
readParams.nbrSamplesInSeg = nbrSamples;
readParams.dataArraySize = sizeof(waveformArray);
readParams.segDescArraySize = sizeof(AqSegmentDescriptorAvg);
readParams.flags = 0;
readParams.reserved = 0;
readParams.reserved2 = 0.0;
readParams.reserved3 = 0.0;
AcqrsD1_readData(instrID, channel, &readParams, waveformArray, &wfDesc,
&segDesc);
Note: If you call a readout function while the acquisition mode is set to digitizer, it will return the last acquired single
waveform, possibly with some unpredictable results.
Note: The „raw‟ sums can be read directly with a different function call (see next section). The relationship between
Volts and the raw sum is expressed by the following formula:
for Averager mode data
sum[i] = (volts[i] + offset + FS/2.0) * 256 * nbrWforms / FS
or for Inverted Averager mode data
sum[i] = (FS * 127./256. - volts[i] - offset) * 256 * nbrWforms / FS
with the following definitions:
sum[i]
32-bit integer sum at position i, unipolar (i.e. 0 or positive)
volts[i]
floating point voltage at position i, as returned by the code fragments above
offset
offset in Volts, as set with AcqrsD1_configVertical
FS
full scale range in Volts, as set with AcqrsD1_configVertical
nbrWforms
number of summed waveforms
The value of „nbrWforms‟ must be known, i.e. if the averaging process was interrupted before reaching the requested
number of waveforms, the formula above yields wrong results. As a check that the correct value of „nbrWforms‟ was
used, the value of „sum[i]‟, before conversion to an integer, must already be very close to an integer.
Use this code fragment for the „legacy‟ function:
long channel = 1, segmentNumber = 0, nbrSamples = 20000;
long returnedSamples, tStampLo, tStampHi;
double waveformArray[20000], horPos, sampTime;
AcqrsD1_readRealWform(instrID, channel, segmentNumber, 0, nbrSamples,
waveformArray, &returnedSamples, &horPos,
&sampTime, &tStampLo, &tStampHi);