Agilent Signal Generators Programming Guide
143
Programming Examples
LAN Programming Interface Examples
close(instSock);
#endif /* WINSOCK */
return 0;
/***************************************************************************
getopt(3C)                                                       getopt(3C)
PROGRAM FILE NAME: getopt.c
getopt - get option letter from argument vector
SYNOPSIS
int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
PRORGAM DESCRIPTION:
getopt returns the next option letter in argv (starting from argv[1])
that matches a letter in optstring.  optstring is a string of
recognized option letters; if a letter is followed by a colon, the
option is expected to have an argument that may or may not be
separated from it by white space.  optarg is set to point to the start
of the option argument on return from getopt.
getopt places in optind the argv index of the next argument to be
processed.  The external variable optind is initialized to 1 before
the first call to the function getopt.
When all options have been processed (i.e., up to the first non-option
argument), getopt returns EOF.  The special option -- can be used to
delimit the end of the options; EOF is returned, and -- is skipped.
***************************************************************************/
#include <stdio.h>      /* For NULL, EOF */
#include <string.h>     /* For strchr() */
char    *optarg;        /* Global argument pointer. */
int     optind = 0;     /* Global argv index. */
.Pdf to .jpg converter online - 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
change pdf to jpg; convert multiple page pdf to jpg
.Pdf to .jpg converter online - 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
convert pdf to 300 dpi jpg; convert pdf into jpg format
144
Agilent Signal Generators Programming Guide
Programming Examples
LAN Programming Interface Examples
static char     *scan = NULL;   /* Private scan pointer. */
int getopt( int argc, char * const argv[], const char* optstring)
{
char c;
char *posn;
optarg = NULL;
if (scan == NULL || *scan == '\0') {
if (optind == 0)
optind++;
if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0')
return(EOF);
if (strcmp(argv[optind], "--")==0) {
optind++;
return(EOF);
}
scan = argv[optind]+1;
optind++;
}
c = *scan++;
posn = strchr(optstring, c);        /* DDP */
if (posn == NULL || c == ':') {
fprintf(stderr, "%s: unknown option -%c\n", argv[0], c);
return('?');
}
posn++;
if (*posn == ':') {
if (*scan != '\0') {
optarg = scan;
scan = NULL;
} else {
optarg = argv[optind];
optind++;
}
}
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.
pdf to jpg; convert pdf to jpg 300 dpi
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
convert pdf into jpg online; convert pdf to jpg for
Agilent Signal Generators Programming Guide
145
Programming Examples
LAN Programming Interface Examples
return(c);
}
Sockets LAN Programming Using Java 
In this example the Java program connects to the signal generator through sockets LAN. This 
program requires Java version 1.1 or later be installed on your PC. To run the program perform the 
following steps: 
1. In the code example below, type in the hostname or IP address of your signal generator. For 
example, String instrumentName = (your signal generator’s hostname). 
2. Copy the program as ScpiSockTest.java and save it in a convenient directory on your 
computer. For example save the file to the C:\jdk1.3.0_2\bin\javac directory.
3. Launch the Command Prompt program on your computer. Click Start > Programs > Command Prompt.
4. Compile the program. At the command prompt type: javac ScpiSockTest.java. 
The directory path for the Java compiler must be specified. For example: 
C:\>jdk1.3.0_02\bin\javac ScpiSockTest.java 
5. Run the program by typing java ScpiSockTest at the command prompt.
6. Type exit at the command prompt to end the program.
Generating a CW Signal Using Java 
The following program example is available on the signal generator Documentation CD-ROM as 
javaex.txt.
//**************************************************************************
// PROGRAM NAME: javaex.txt                                                           // Sample java 
program to talk to the signal generator via SCPI-over-sockets 
// This program requires Java version 1.1 or later. 
// Save this code as ScpiSockTest.java
// Compile by typing: javac ScpiSockTest.java
// Run by typing: java ScpiSockTest
// The signal generator is set for 1 GHz and queried for its id string
//**************************************************************************
import java.io.*;  
import java.net.*;  
class ScpiSockTest  
 
public static void main(String[] args)  
 
String instrumentName = "xxxxx";         // Put instrument hostname here  
try  
   
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.
advanced pdf to jpg converter; convert pdf image to jpg image
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.PDF.dll. using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.dcm"; String outputFilePath = @"C:\output.jpg"; // Convert dicom to
change pdf to jpg image; convert pdf pages to jpg online
146
Agilent Signal Generators Programming Guide
Programming Examples
LAN Programming Interface Examples
Socket t = new Socket(instrumentName,5025);  // Connect to instrument 
// Setup read/write mechanism 
BufferedWriter out =  
new BufferedWriter( 
new OutputStreamWriter(t.getOutputStream())); 
BufferedReader in =  
new BufferedReader( 
new InputStreamReader(t.getInputStream())); 
System.out.println("Setting frequency to 1 GHz..."); 
out.write("freq 1GHz\n");               // Sets frequency  
out.flush(); 
System.out.println("Waiting for source to settle..."); 
out.write("*opc?\n");                   // Waits for completion 
out.flush(); 
String opcResponse = in.readLine(); 
if (!opcResponse.equals("1"))  
System.err.println("Invalid response to '*OPC?'!"); 
System.exit(1);                       
System.out.println("Retrieving instrument ID..."); 
out.write("*idn?\n");                      // Querys the id string
out.flush(); 
String idnResponse = in.readLine();        // Reads the id string
// Prints the id string
System.out.println("Instrument ID: " + idnResponse); 
 
catch (IOException e) 
 
System.out.println("Error" + e);  
}  
}  
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Features and Benefits. Powerful image converter to convert images of JPG Support a batch conversion of JPG to PDF with high speed; Get a compressed PDF file after
change pdf file to jpg online; .net pdf to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
An advanced PDF converter tool, which supports to be integrated in .NET to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
changing pdf to jpg; convert pdf into jpg
Agilent Signal Generators Programming Guide
147
Programming Examples
LAN Programming Interface Examples
Sockets LAN Programming Using Perl
This example uses PERL to control the signal generator over the sockets LAN interface. The signal 
generator frequency is set to 1 GHz, queried for operation complete and then queried for it’s identify 
string. This example was developed using PERL version 5.6.0 and requires a PERL version with the 
IO::Socket library.
1. In the code below, enter your signal generator’s hostname in place of the xxxxx in the code line: 
my $instrumentName= “xxxxx”; .
2. Save the code listed below using the filename lanperl. 
3. Run the program by typing perl lanperl at the UNIX term window prompt.
Setting the Power Level and Sending Queries Using PERL 
The following program example is available on the signal generator Documentation CD-ROM as 
perl.txt.
#!/usr/bin/perl  
# PROGRAM NAME: perl.txt
# Example of talking to the signal generator via SCPI-over-sockets 
 
use IO::Socket;  
# Change to your instrument's hostname 
my $instrumentName = "xxxxx"; 
# Get socket 
$sock = new IO::Socket::INET ( PeerAddr => $instrumentName,  
PeerPort => 5025,  
Proto => 'tcp',  
);  
die "Socket Could not be created, Reason: $!\n" unless $sock;  
# Set freq 
print "Setting frequency...\n"; 
print $sock "freq 1 GHz\n"; 
# Wait for completion 
print "Waiting for source to settle...\n"; 
print $sock "*opc?\n"; 
my $response = <$sock>; 
chomp $response;           # Removes newline from response 
if ($response ne "1")  
die "Bad response to '*OPC?' from instrument!\n"; 
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
Features and Benefits. High speed JPEG to GIF Converter, faster than other JPG Converters; Standalone software, so the user who is not online still can use
convert pdf file into jpg; convert pdf image to jpg online
VB.NET Create PDF from images Library to convert Jpeg, png images
Support create PDF from multiple image formats in VB.NET, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage. .NET converter control for
bulk pdf to jpg converter; change pdf into jpg
148
Agilent Signal Generators Programming Guide
Programming Examples
LAN Programming Interface Examples
# Send identification query 
print $sock "*IDN?\n";  
$response = <$sock>;  
chomp $response; 
print "Instrument ID: $response\n"; 
TCP-IP (LAN) Programming Using Matlab
The examples in this section are meant to be used in one of three ways:
• Using a PSA to directly calculate and load an Equalization filter into the MXG. (This process can 
be easily automated.)
1. Set up the PSA to measure the modulation.
2. Turn on the equalization filter.
3. Call loadPsaEqFilterFreq (example 1) in Matlab to read out the equalization channel response 
over LAN via SCPI and calculate the correct equalization filter.
4. Call writeMxgFir (example 4) in Matlab to write out the equalization filter over LAN via SCPI 
to the MXG.
• Manual process using the VSA 89600 software to measure the channel response, calculate the 
correction equalization filter and load that filter into the MXG:
1. Setup to measure the modulation. 
2. Turn on the equalization filter.
3. View the equalization channel response trace, either “Eq Ch Freq Resp” or “Eq Impls Resp”.
4. Save the trace as ".mat" file, with the header included.
5. Call loadVsaEqFilter (example 3) in Matlab to read the file and calculate a correction filter.
6. Call writeMxgFir (example 4) in Matlab to write out the equalization filter over LAN via SCPI 
to the MXG. 
• Takes a user-created filter in Matlab—either an equalization filter or a modulation filter—and 
writes it to a FIR file in the MXG.
This section contains the following examples:
1. “Example 1: Reading Out the Channel Response and Calculating Corrections for an Equalization 
Filter Using Matlab”
2. “Example 2: Reading a PXA Trace and Setting up the Equalization Filter Using Matlab”
3. “Example 3: Reading a VSA Trace and Setting up the Equalization Filter Using Matlab”
4. “Example 4: Downloading a FIR filter in Matlab to the MXG”
Agilent Signal Generators Programming Guide
149
Programming Examples
LAN Programming Interface Examples
Example 1: Reading Out the Channel Response and Calculating Corrections for an Equalization Filter Using Matlab 
NOTE
For X-Series signal generators (N5172B/82B), replace the 125MHz value with 200MHz.
This example reads out the channel response from a PSA and calculates a correction equalization 
filter that can be loaded into the MXG.
The following program example is available on the signal generator Documentation CD-ROM as 
loadPsaEQFilterFreq.m.
function [corrFilter] = loadPsaEqFilter(psaDev, destRate)
% [corrFilter] = loadPsaEqFilter(psaDev[, destRate])
% Reads out the current Equalization filter active on the PSA specified.
% The communication is over TCP-IP (LAN).
% destRate is assumed to be 125e6 if missing
% Example: [corrFilter] = loadPsaEqFilter('psa4') 
% output of corrFilter is in time domain.
% NOTE: The equalization filter feature in the PSA Digital Modulation
% Modulation Analysis mode must be ON for this script to work.
% It can be set to EQ Hold ON.
%
% Typically followed with something like:
 writeMxgFir('a-n5182a-00211', 'EQ_1GHZ_62MHZ', corrFilter);
if (nargin<1 || nargin>2)
error('[corrFilter] = loadPsaEqFilter(psaDev[, destRate]) -- destRate is assumed to be 125e6 if 
missing');
end
if (nargin<2)
destRate=125e6;
end
% contact PSA using LAN
t=tcpip(psaDev, 5025);
t.OutputBufferSize=1*1024*1024;
t.InputBufferSize=1*1024*1024;
fopen(t);
fprintf(t, ':FETCh:EVM9?\n');
magDb = readArrayOfDoubles(t);
fprintf(t, ':FETCh:EVM10?\n');
phaseDeg = readArrayOfDoubles(t);
fprintf(t, ':FETCh:EVM21?\n');
xSteps = readArrayOfDoubles(t);
fclose(t);
freqStep = xSteps(1 + 9*2 + 1);
150
Agilent Signal Generators Programming Guide
Programming Examples
LAN Programming Interface Examples
oversample = 1/xSteps(1 + 8*2 +1);
% /10 compensates for issue with PSA (should be /20)
% this issue will be corrected in a future release
linmag = 10.^(magDb./10);
% *2 compensates for issue with PSA (should be *1)
% this issue will be corrected in a future release
phaseRad = phaseDeg./(360/(2*pi)).*2;
coeffs = linmag.*cos(phaseRad)+j*linmag.*sin(phaseRad);
rate = oversample*round(freqStep*length(coeffs)); % frequency range is also rate
% we now have a centered frequency domain version of the channel response
% invert so that we will cancel the channel response
invertedFreqDomain = 1./coeffs;
% convert to time domain (first placing the 0 frequency at the left edge)
timeDomain=ifft(ifftshift(invertedFreqDomain));
% put time domain 0 time in center
len=length(timeDomain);
if (mod(length(timeDomain), 2)==1) % odd
center=ceil(len/2);
centeredTime(1:(center-1)) = timeDomain(center+1:end);
centeredTime(center:len) = timeDomain(1:center);
else % even
topHalf = (length(timeDomain)/2)+1;
centeredTime(1:(topHalf-1)) = timeDomain(topHalf:end);
centeredTime(topHalf:len) = timeDomain(1:(topHalf-1));
end
% resample to desired rate if necessary
if (abs(destRate-rate)>1e-6)
% note that this resample function only works with integer rates
resampledTime = resample(centeredTime, destRate, rate, 30);
resampledTime = resampledTime.*(rate/destRate);
else
resampledTime = centeredTime;
end
% clip off the center 256 (if necessary)
if (length(resampledTime)>256)
% the peak point is assumed to be the center
[maxval, index] = max(abs(resampledTime));
center=index;
left = center-127;
right = left+255;
clippedTime=resampledTime((left):(right));
else
Agilent Signal Generators Programming Guide
151
Programming Examples
LAN Programming Interface Examples
clippedTime = resampledTime;
end
corrFilter=clippedTime;
end
function array = readArrayOfDoubles(fid)
line = fgets(fid);
array = sscanf(line, '%g%*c');
end 
Example 2: Reading a PXA Trace and Setting up the Equalization Filter Using Matlab 
NOTE
For MXG signal generators (N5162B/82B), replace the 200MHz value with 125MHz.
This example reads a PXA trace of “Eq Ch Freq Resp” or “Eq Impls Resp” and creates an 
equalization filter compatible with the X-Series and MXG signal generators.
function [corrFilter] = loadPxaEqFilter(pxaAddress, destRate, displayCorr)
% [corrFilter] = loadPxaEqFilter(pxaAddress[, destRate[, displayCorr]])
% Reads out the current Equalization filter active on the PXA specified.
% The communication is over TCP-IP (LAN).
% destRate is assumed to be 200e6 if missing
% displayCorr is assumed to 0 (off) if missing
% Example: [corrFilter] = loadPxaEqFilter('pxa4')
% output of corrFilter is in time domain.
% NOTE: The equalization filter feature on the PXA must be ON for this
% script to work. It can be EQ Hold ON.
%
% Typically followed with something like:
 writeMxgFir('a-n5182b-00211', 'EQ_1GHZ_62MHZ', corrFilter);
if (nargin<1 || nargin>3)
error('[corrFilter] = loadPxaEqFilter(pxaAddress[, destRate[, displayCorr]]) -- destRate is assumed 
to be 200e6 if missing');
end
if (nargin<2)
destRate=200e6;
end
if (nargin<3)
displayCorr=0;
end
% contact PXA
152
Agilent Signal Generators Programming Guide
Programming Examples
LAN Programming Interface Examples
t=tcpip(pxaAddress, 5025);
t.OutputBufferSize=1*1024*1024;
t.InputBufferSize=1*1024*1024;
fopen(t);
fprintf(t, ':DISPlay:DDEM:TRAC2:FEED "Eq Impulse Response1"\n');
fprintf(t, 'DISP:DDEM:TRACe2:FORMat REAL\n');
fprintf(t, 'calc:DDEM:DATA2?\n');
realTime = readArrayOfDoubles(t);
fprintf(t, 'DISP:DDEM:TRACe2:FORMat IMAG\n');
fprintf(t, 'calc:DDEM:DATA2?\n');
imagTime = readArrayOfDoubles(t);
coeffs = realTime + 1i.*imagTime;
fprintf(t, 'calc:DDEM:DATA2:HEAD? "XDelta"\n');
timeStep = readArrayOfDoubles(t);
rate = ceil(1 / timeStep - 1e-9);
% mirror coefficients
coeffs = coeffs(length(coeffs):-1:1);
% convert to frequency coefficients (null group delay with ifftshift)
coeffs = fft(ifftshift(coeffs));
% invert phase in frequency domain
mag = abs(coeffs);
ang = -angle(coeffs);
coeffs = mag.*cos(ang)+1i*mag.*sin(ang);
% display the frequency domain version again
fprintf(t, ':DISPlay:DDEM:TRAC2:FEED "Ch Frequency Response1"\n');
fprintf(t, ':DISPlay:DDEM:TRAC2:FORMat MLOG\n');
fprintf(t, ':DISPlay:DDEM:TRAC2:Y:AUTO:ONCE\n');
% must center frequency domain (to match what comes in frequency domain)
coeffs = fftshift(coeffs);
fclose(t);
% convert to time domain (first placing the 0 frequency at the left edge)
timeDomain=ifft(ifftshift(coeffs));
centeredTime = fftshift(timeDomain);
if (abs(destRate-rate)>1e-6)
% this simple resample function may be insuffient for some rates
resampledTime = resample(centeredTime, destRate, rate, 30);
resampledTime = resampledTime.*(rate/destRate);
else
resampledTime = centeredTime;
end
%%%
% display resulting corrections
Documents you may be interested
Documents you may be interested