Specifications

Chapter 17 263
ESA Programming Examples
Using C to Measure Harmonic Distortion (over RS-232)
ESA Programming Examples
/* CALC:MARK:MAX */
/* Set marker amplitude in volts */
/* UNIT:POW V */
/* Query, read the marker amplitude in volts */
/* CALC:MARK:Y? */
/* Change the amplitude units to dBm and read the */
/* marker amplitude. */
/* UNIT:POW DBM */
/* - Calculate the relative amplitude of each harmonic */
/* reletive to the fundamental */
/* - Calculate the total harmonic distortion */
/* - Display the fundamental amplitude in dBm, fundamental */
/* frequency in MHz, relative amplitude of each harmonic */
/* in dBc and total harmonic distortion in percent */
/* - Close the session */
/************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <visa.h>
#define hpESA_IDN_E4401B "Hewlett-Packard, E4401B"
#define hpESA_IDN_E4411B "Hewlett-Packard, E4411B"
#definehpEMC_IDN_E7401A "Hewlett-Packard, E7401A"
ViSession defaultRM, viESA;
ViStatus errStatus;
ViChar cIdBuff[256]= {0};
char cEnter = 0;
int iResult = 0;
long lOpc =0L ;
/*Set the input port to 50MHz amplitude reference*/
void Route50MHzSignal()
{
viQueryf(viESA, "*IDN?\n", "%t", &cIdBuff);
iResult = (strncmp( cIdBuff, hpESA_IDN_E4401B, strlen(hpESA_IDN_E4401B)) &&
strncmp( cIdBuff, hpESA_IDN_E4411B, strlen(hpESA_IDN_E4411B)) && strncmp( cIdBuff,
hpEMC_IDN_E7401A, strlen(hpEMC_IDN_E7401A)));
if( iResult == 0 )
{