280 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide
Creating and Downloading Waveform Files
Programming Examples
// 32767 gives positive full-scale output
// From these ranges, it appears you should offset the
// data by 8192 and scale it by 4. However, due to the
// interpolators in these products, it is better to scale
// the data by a number less than four. Commonly a good
// choice is 70% of 4 which is 2.8.
// By default, the signal generator scales data to 70%
// If you scale the data here, you may want to change the
// signal generator scaling to 100%
// Also we need to swap the byte order on a little endian
// computer. This code also works for big endian order data
// since it swaps bytes based on the order.
for(index=0; index<numsamples; index++)
{
int iscaled = 2.8*(idata[index]-8192); // shift and scale
int qscaled = 2.8*(qdata[index]-8192); // shift and scale
iqbuffer[index*4] = (iscaled >> 8) & 0xFF; // high byte of
i
iqbuffer[index*4+1] = iscaled & 0xFF; // low byte of i
iqbuffer[index*4+2] = (qscaled >> 8) & 0xFF; // high byte of
q
iqbuffer[index*4+3] = qscaled & 0xFF; // low byte of q
}
// Open a connection to write to the instrument
INST id=iopen(instOpenString);
if (!id)
{
fprintf(stderr, “iopen failed (%s)\n”, instOpenString);
return -1;
}
// Declare variables which will be used later
int bytesToSend;
Summary of Contents for X-Series
Page 4: ...4 ...
Page 10: ...10 Contents ...