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 )
{










