Agilent Technologies N5183A MXG User Manual

Page 263

Advertising
background image

Agilent N518xA, E8663B, E44x8C, and E82x7D Signal Generators Programming Guide

253

Creating and Downloading Waveform Files

Programming Examples

// 0 gives 0 V output

// 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;

char s[20];

char cmd[200];

// The E4438C, E8267C and E8267D accept the E443xB format.

// so we can use this next section on any of these signal generators.

// However the E443xB format only uses 14 bits.

bytesToSend = numsamples*2; // calculate the number of bytes

sprintf(s, “%d”, bytesToSend); // create a string s with that number of bytes

Advertising
This manual is related to the following products: