Agilent Signal Generators Programming Guide
253
Creating and Downloading Waveform Files
Downloading Waveform Data
9
Calculate the total number of bytes, and store the value in the integer variable defined in line 8.
In this code, numsamples contains the number of waveform points, not the number of bytes. Because it takes 
four bytes of data, two I bytes and two Q bytes, to create one waveform point, we have to multiply 
numsamples by four. This is shown in the following example:
numsamples = 500 waveform points
numsamples 4 = 2000 (four bytes per point)
bytesToSend = 2000 (numsamples  4)
For information on setting the number of waveform points, see “1. Create I and Q data.” on page 242.
10
Create a string large enough to hold the bytesToSend value as characters. In this code, string s is set to 20 
bytes (20 characters—one character equals one byte)
11
Create a string and set its length (cmd[200]) to hold the SCPI command syntax and parameters. In this code, 
we define the string length as 200 bytes (200 characters).
12
Store the value of bytesToSend in string s. For example, if bytesToSend = 2000; s = ”2000”
sprintf() is a standard function in C++, which writes string data to a string variable.
13
Store the SCPI command syntax and parameters in the string cmd. The SCPI command prepares the signal 
generator to accept the data.
strlen() is a standard function in C++, which returns length of a string.
If bytesToSend = 2000, then s = “2000”, strlen(s) = 4, so 
cmd = :MEM:DATA ”WFM1:FILE1\” #42000.
14
Send the SCPI command stored in the string cmd to the signal generator, which is represented by the session 
id.
iwrite() is a SICL function in Agilent IO library, which writes the data (block data) specified in the string 
cmd to the signal generator (id).
The third argument of iwrite(), strlen(cmd), informs the signal generator of the number of bytes in the 
command string. The signal generator parses the string to determine the number of I/Q data bytes it 
expects to receive.
The fourth argument of iwrite(), 0, means there is no END of file indicator for the string. This lets the 
session remain open, so the program can download the I/Q data. 
Line
Code Description—Download the I/Q data
Convert pdf to jpg converter - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
convert pdf to high quality jpg; convert pdf file to jpg file
Convert pdf to jpg converter - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
best pdf to jpg converter; convert pdf pictures to jpg
254
Agilent Signal Generators Programming Guide
Creating and Downloading Waveform Files
Loading, Playing, and Verifying a Downloaded Waveform
Loading, Playing, and Verifying a Downloaded Waveform
The following procedures show how to perform the steps using SCPI commands. For front panel key 
commands, refer to the User’s Guide or to the Key help in the signal generator.
Loading a File from Non–Volatile Memory
Select the downloaded I/Q file in non–volatile waveform memory (NVWFM) and load it into volatile 
waveform memory (WFM1). The file comprises three items: I/Q data, marker file, and file header 
information.
Send one of the following SCPI command to copy the I/Q file, marker file and file header 
information: 
:MEMory:COPY:NAME "<NVWFM:file_name>","<WFM1:file_name>"
:MEMory:COPY:NAME "<NVMKR:file_name>","<MKR1:file_name>"
:MEMory:COPY:NAME "<NVHDR:file_name>”,"<HDR:file_name>"
15
Send the generated waveform data stored in the I/Q array (iqbuffer) to the signal generator.
iwrite() sends the data specified in iqbuffer to the signal generator (session identifier specified in id).
The third argument of iwrite(), bytesToSend, contains the length of the iqbuffer in bytes. In this example, 
it is 2000.
The fourth argument of iwrite(), 0, means there is no END of file indicator in the data.
In many programming languages, there are two methods to send SCPI commands and data:
Method 1 where the program stops the data download when it encounters the first zero (END 
indicator) in the data.
Method 2 where the program sends a fixed number of bytes and ignores any zeros in the data. This 
is the method used in our program.
For your programming language, you must find and use the equivalent of method two. Otherwise you may 
only achieve a partial download of the I and Q data.
16
Send the terminating carriage (\n) as the last byte of the waveform data.
iwrite() writes the data “\n” to the signal generator (session identifier specified in id).
The third argument of iwrite(), 1, sends one byte to the signal generator.
The fourth argument of iwrite(), 1, is the END of file indicator, which the program uses to terminate the 
data download.
To verify the waveform data download, see “Loading, Playing, and Verifying a Downloaded Waveform” on 
page 254.
Line
Code Description—Download the I/Q data
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
convert pdf into jpg; change pdf to jpg online
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
change format from pdf to jpg; .net pdf to jpg
Agilent Signal Generators Programming Guide
255
Creating and Downloading Waveform Files
Loading, Playing, and Verifying a Downloaded Waveform
NOTE
When you copy a waveform file, marker file, or header file information from volatile or 
non–volatile memory, the waveform and associated marker and header files are all copied. 
Conversely, when you delete an I/Q file, the associated marker and header files are deleted. 
It is not necessary to send separate commands to copy or delete the marker and header 
files. 
Playing the Waveform
NOTE
If you would like to build and play a waveform sequence, refer to “Building and Playing 
Waveform Sequences” on page 256.
Play the waveform and use it to modulate the RF carrier.
1. List the waveform files from the volatile memory waveform list:
Send the following SCPI command:
:MMEMory:CATalog? "WFM1:"
2. Select the waveform from the volatile memory waveform list:
Send the following SCPI command:
:SOURce:RADio:ARB:WAVeform "WFM1:<file_name>"
3. Play the waveform:
Send the following SCPI commands:
:SOURce:RADio:ARB:STATe ON
:OUTPut:MODulation:STATe ON
:OUTPut:STATe ON
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
c# convert pdf to jpg; .pdf to jpg converter online
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.PDF.dll. This demo code will convert first page to jpeg image. C:\input.dcm"; String outputFilePath = @"C:\output.jpg"; // Convert dicom to jpg.
batch pdf to jpg converter online; convert online pdf to jpg
256
Agilent Signal Generators Programming Guide
Creating and Downloading Waveform Files
Loading, Playing, and Verifying a Downloaded Waveform
Verifying the Waveform
Perform this procedure after completing the steps in the previous procedure, “Playing the Waveform” 
on page 255.
1. Connect the signal generator to an oscilloscope as shown in the figure.
2. Set an active marker point on the first waveform point for marker one.
NOTE
Select the same waveform selected in “Playing the Waveform” on page 255.
Send the following SCPI commands:
:SOURce:RADio:ARB:MARKer:CLEar:ALL "WFM1:<file_name>",1
:SOURce:RADio:ARB:MARKer:SET "WFM1:<file_name>",1,1,1,0.
3. Compare the oscilloscope display to the plot of the I and Q data from the text file you created 
when you generated the data.
If the oscilloscope display, and the I and Q data plots differ, recheck your code. For detailed 
information on programmatically creating and downloading waveform data, see “Creating 
Waveform Data” on page 242 and “Downloading Waveform Data” on page 248. For information on 
the waveform data requirements, see “Waveform Data Requirements” on page 213.
Building and Playing Waveform Sequences
The signal generator can be used to build waveform sequences. This section assumes you have 
created the waveform segment file(s) and have the waveform segment file(s) in volatile memory. The 
following SCPI commands can be used to generate and work with a waveform sequence. For more 
information refer to the signal generator’s SCPI Command Reference and User’s Guide.
NOTE
If you would like to verify the waveform sequence, refer to “Verifying the Waveform” on 
page 256.
C# Create PDF from images Library to convert Jpeg, png images to
Best and professional C# image to PDF converter SDK for Visual Studio .NET. Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif
convert multiple page pdf to jpg; convert pdf file to jpg online
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Image Converter Pro - JPEG to PDF Converter. Convert JPEG (JPG) Images to, from PDF Images on Windows.
convert pdf file into jpg; batch convert pdf to jpg
Agilent Signal Generators Programming Guide
257
Creating and Downloading Waveform Files
Using the Download Utilities
1. List the waveform files from the volatile memory waveform list:
Send the following SCPI command:
:MMEMory:CATalog? "WFM1:"
2. Select the waveform segment file(s) from the volatile memory waveform list:
Send the following SCPI command:
:SOURce:RADio:ARB:WAVeform "WFM1:<file_name>"
3. Save the waveform segment(s) (“<waveform1>”“<waveform2>”, ...), to non–volatile memory as a 
waveform sequence (“<file_name>”), define the number of repetitions (<reps>), each waveform 
segment plays, and enable/disable markers (M1|M2|M3|M4|...), for each waveform segment:
Send the following SCPI command:
:SOURce:RADio:ARB:SEQuence 
"<file_name>","<waveform1>",<reps>,M1|M2|M3|M4,{"<waveform2>",<reps>,ALL}
:SOURce:RADio:ARB:SEQuence? "<file_name>"
NOTE
M1|M2|M3|M4 represent the number parameter of the marker selected (i.e. 1|2|3|4). Entering 
M1|M2|M3|M4 causes the signal generator to display an error. For more information on this 
SCPI command, refer to the signal generator’s SCPI Command Reference.
4. Play the waveform sequence:
Send the following SCPI commands:
:SOURce:RADio:ARB:STATe ON
:OUTPut:MODulation:STATe ON
:OUTPut:STATe ON
Using the Download Utilities
Agilent provides free download utilities to download waveform data into the signal generator. The 
table in this section describes the capabilities of three such utilities.
For more information and to install the utilities, refer to the following URLs:
• Agilent Signal Studio Toolkit 2: http://www.agilent.com/find/signalstudio
This software provides a graphical interface for downloading files.
• Agilent IntuiLink for Agilent PSG/ESG/E8663B Signal Generators: 
http://www.agilent.com/find/intuilink
This software places icons in the Microsoft Excel and Word toolbar. Use the icons to connect to 
the signal generator and open a window for downloading files.
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Resize converted image files in VB.NET. Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Bitmap in ASP.NET. Embed PDF to image converter in viewer.
change pdf to jpg online; change format from pdf to jpg
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
Image Converter Pro - JPEG to GIF Converter. Convert JPEG (JPG) Images to, from GIF Images on Windows.
convert pdf to jpg 100 dpi; convert pdf to gif or jpg
258
Agilent Signal Generators Programming Guide
Creating and Downloading Waveform Files
Downloading E443xB Signal Generator Files
NOTE
Agilent Intuilink is not available for the Agilent MXG.
• Agilent Waveform Download Assistant: http://www.agilent.com/find/downloadassistant
This software provides functions for the MATLAB environment to download waveform data.
Downloading E443xB Signal Generator Files 
To download earlier E443xB model I and Q files, use the same SCPI commands as if downloading 
files to an E443xB signal generator. The signal generator automatically converts the E443xB files to 
the proper file format as described in “Waveform Structure” on page 221 and stores them in the 
signal generator’s memory. This conversion process causes the signal generator to take more time to 
download the earlier file format. To minimize the time to convert earlier E443xB files to the proper 
file format, store E443xB file downloads to volatile memory, and then transfer them over to 
non–volatile (NVWFM) memory.
NOTE
You cannot extract waveform data downloaded as E443xB files.
Features
Agilent Signal 
Studio Toolkit 2
Agilent 
IntuiLink
a
a. Agilent Intuilink is not available for the Agilent MXG.
Agilent 
Waveform 
Download 
Assistant
Downloads encrypted waveform files
X
Downloads complex MATLAB waveform data
X
Downloads MATLAB files (.mat)
X
Downloads unencrypted interleaved 16–bit I/Q files 
b
b. ASCII or binary format.
X
Interleaves and downloads earlier 14–bit E443xB I and Q files
b
X
Swaps bytes for little endian order
X
Manually select big endian byte order for 14–bit and 16–bit I/Q 
files
X
Downloads user–created marker files
X
X
Performs scaling
X
X
X
Starts waveform play back
X
X
Sends SCPI Commands and Queries
X
X
Builds a waveform sequence
X
X
Agilent Signal Generators Programming Guide
259
Creating and Downloading Waveform Files
Downloading E443xB Signal Generator Files
E443xB Data Format
The following diagram describes the data format for the E443xB waveform files. This file structure 
can be compared with the new style file format shown in “Waveform Structure” on page 221. If you 
create new waveform files for the signal generator, use the format shown in “Waveform Data 
Requirements” on page 213
Storage Locations for E443xB ARB files
Place waveforms in either volatile memory or non–volatile memory. The signal generator supports the 
E443xB directory structure for waveform file downloads (i.e. “ARBI:”, “ARBQ:”, “NVARBI:”, and 
“NVARBQ:”, see also “SCPI Commands” on page 261).
Volatile Memory Storage Locations
• /user/arbi/
• /user/arbq/
Non–Volatile Memory Storage Locations
• /user/nvarbi/
• /user/nvarbq/
Loading files into the above directories (volatile or non–volatile memory) does not actually store them 
in those directories. Instead, these directories function as “pipes” to the format translator. The signal 
generator performs the following functions on the E443xB data:
• Converts the 14–bit I and Q data into 16–bit data (the format required by the signal generator).
Subtract 8192, left shifts the data, and appends two bits (zeros) before the least significant bit 
(i.e. the offset binary values are converted to 2’s complement values by the signal generator).
260
Agilent Signal Generators Programming Guide
Creating and Downloading Waveform Files
Downloading E443xB Signal Generator Files
• Creates a marker file and places the marker information, bits 14 and 15 of the E443xB I data, 
into the marker file for markers one and two. Markers three and four, within the new marker file, 
are set to zero (off).
• Interleaves the 16–bit I and Q data creating one I/Q file.
• Creates a file header with all parameters set to unspecified (factory default file header setting).
1100110110111001 0000100111011001
1001011011100100
E443xB 14–Bit Data
I data
Q data
Subtracts 8192, Left Shifts, and Adds Zeros—Removes Marker and Reserved Bits
16–bit I data
16–bit Q data
Marker bits
Reserved bits
(16–Bit Data Format)
Bits added
Bits added
11
Marker bits removed
1000011101100100
00
Reserved bits removed
14 data bits
14 data bits
0011
Places the I Marker Bits into the Signal Generator Marker File
Marker 3 and 4 bits
Marker 1 and 2 bits from the E443xB I data
Agilent Signal Generators Programming Guide
261
Creating and Downloading Waveform Files
Programming Examples
SCPI Commands
Use the following commands to download E443xB waveform files into the signal generator. 
NOTE
To avoid overwriting the current waveform in volatile memory, before downloading files into 
volatile memory (WFM1), change the file name or turn off the ARB. For more information, on 
manually turning off the ARB, refer to the User’s Guide.
To turn off the ARB remotely, send: :SOURce:RADio:ARB:STATe OFF.
The variables <I waveform block data> and <Q waveform block data> represents data in the 
E443xB file format. The string variable <file_name> is the name of the I and Q data file. After 
downloading the data, the signal generator associates a file header and marker file with the I/Q data 
file.
Programming Examples
NOTE
The programming examples contain instrument–specific information. However, users can still 
use these programming examples by substituting in the instrument–specific information for 
your signal generator. Model specific exceptions for programming use, will be noted at the 
top of each programming section.
The programming examples use GPIB or LAN interfaces and are written in the following languages:
• C++ (page 262)
• MATLAB (page 284)
• Visual Basic (page 299)
• HP Basic (page 304)
See Chapter 2 of this programming guide for information on interfaces and IO libraries. 
The example programs are also available on the signal generator Documentation CD–ROM, which 
allows you to cut and paste the examples into an editor.
Extraction Method/ 
Memory Type
Command Syntax Options
SCPI/
volatile memory
:MMEM:DATA "ARBI:<file_name>", <I waveform block data>
:MMEM:DATA "ARBQ:<file_name>", <Q waveform data>
SCPI/
non–volatile memory
:MMEM:DATA "NVARBI:<file_name>", <I waveform block data>
:MMEM:DATA "NVARBQ:<file_name>", <Q waveform block data>
262
Agilent Signal Generators Programming Guide
Creating and Downloading Waveform Files
Programming Examples
C++ Programming Examples
This section contains the following programming examples:
• “Creating and Storing Offset I/Q Data—Big and Little Endian Order” on page 262
• “Creating and Storing I/Q Data—Little Endian Order” on page 266
• “Creating and Downloading I/Q Data—Big and Little Endian Order” on page 267
• “Importing and Downloading I/Q Data—Big Endian Order” on page 271
• “Importing and Downloading Using VISA—Big Endian Order” on page 273
• “Importing, Byte Swapping, Interleaving, and Downloading I and Q Data—Big and Little Endian 
Order” on page 277
• “Calculating the RMS Voltage for a Waveform Programming Using C++” on page 283
Creating and Storing Offset I/Q Data—Big and Little Endian Order
On the documentation CD, this programming example’s name is “offset_iq_c++.txt.” 
This C++ programming example (compiled using Microsoft Visual C++ 6.0) follows the same coding 
algorithm as the MATLAB programming example “Creating and Storing I/Q Data” on page 284 and 
performs the following functions:
• error checking
• data creation
• data normalization
• data scaling
• I/Q signal offset from the carrier (single sideband suppressed carrier signal)
• byte swapping and interleaving for little endian order data
• I and Q interleaving for big endian order data
• binary data file storing to a PC or workstation
• reversal of the data formatting process (byte swapping, interleaving, and normalizing the data)
After creating the binary file, you can use FTP, one of the download utilities, or one of the C++ 
download programming examples to download the file to the signal generator.
// This C++ example shows how to 
// 1.) Create a simple IQ waveform
// 2.) Save the waveform into the ESG/PSG Internal Arb format
//       This format is for the E4438C, E8267C, E8267D
//       This format will not work with the ESG E443xB or the Agilent MXG N518xA
// 3.) Load the internal Arb format file into an array
#include <stdio.h>
#include <string.h>
#include <math.h>
const int POINTS = 1000;  // Size of waveform 
const char *computer = “PCWIN”;                  
int main(int argc, char* argv[])
Documents you may be interested
Documents you may be interested