Programming instructions

Downloading and Using Files
ARB Waveform Data Downloads
Chapter 4 155
Example Programs
Waveform Generation Using C++ The following program (
Metrowerks CodeWarrior 3.0)
creates an IQ waveform and writes the data to a file on your PC. Once the file is created, you
can use the file transfer protocol (FTP) to download the waveform data to the signal generator.
Refer to “Downloads Using FTP” on page 153 for more information on FTP.
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main ( void )
{
ofstream out_stream; // write the IQ data to a file
const unsigned int SAMPLES =200; // number of sample pairs in the waveform
const short AMPLITUDE = 32000; // amplitude between 0 and full scale dac value
const double two_pi = 6.2831853;
//allocate buffer for waveform
short* iqData = new short[2*SAMPLES];// need two bytes for each integer
if (!iqData)
{
cout << "Could not allocate data buffer." << endl;
return 1;
}
out_stream.open("IQ_data"); // create a data file
if (out_stream.fail())
{
cout << "Input file opening failed" << endl;
exit(1);
}
//generate the sample data for I and Q. The I channel will have a sine
//wave and the Q channel will a cosine wave.
for (int i=0; i<SAMPLES; ++i)
{
iqData[2*i] = AMPLITUDE * sin(two_pi*i/(float)SAMPLES);
iqData[2*i+1] = AMPLITUDE * cos(two_pi*i/(float)SAMPLES);
}
// make sure bytes are in the order MSB(most significant byte) first. (PC only).
char* cptr = (char*)iqData;// cast the integer values to characters
for (int i=0; i<(4*SAMPLES); i+=2)// 4*SAMPLES
{
char temp = cptr[i]; // swap LSB and MSB bytes
cptr[i]=cptr[i+1];
cptr[i+1]=temp;
}
// now write the buffer to a file
out_stream.write((char*)iqData, 4*SAMPLES);
return 0;
}