Chapter 7 Application Programs

Example Programs for C and C++

C / C++ Example: dac_out.c

/* dac_out.c /***************************************************************************

* Required: HP 34907A Multifunction Module in slot 200; VISA library

*

* This program uses the VISA library to communicate with the HP 34970A.

*

* The program queries slot 200 and displays the response. It then resets

*

* the instrument and sends the value ’voltage’ to the DAC on channel 205. *

****************************************************************************/

#include <visa.h>

 

#include <stdio.h>

 

#include <string.h>

 

#define ADDR "9"

/* Set HP-IB address for instrument */

void main ()

 

{

 

ViSession defaultRM;

/* Resource manager id */

ViSession dac;

/* Identifies instrument */

char reply_string [256];

/* String returned from instrument */

char Visa_address[40];

/* VISA address sent to module */

double voltage;

/* Value of voltage sent to DAC */

/* Build the address required to open communication with HP-IB card. The address format looks like this "GPIB0::9::INSTR". */

strcpy(Visa_address,"GPIB0::"); strcat(Visa_address, ADDR); strcat(Visa_address, "::INSTR");

/* Open communication (session) with the HP 34970A */

viOpenDefaultRM (&defaultRM);

viOpen (defaultRM, Visa_address,VI_NULL,VI_NULL, &dac);

/* Query the module id in slot 200; Read response and print. */ viPrintf (dac, "SYST:CTYPE? 200\n");

viScanf (dac, "%s", &reply_string);

printf("Instrument identification string:\n %s\n\n", reply_string);

viPrintf (dac, "*RST\n");

/*

Set

power-on

condition */

voltage = 5;

/*

Set

variable

to voltage setting */

viPrintf (dac, "SOURCE:VOLTAGE %f,(@205)\n",voltage); /* Set output voltage */ /* Close communication session */

viClose (dac); viClose (defaultRM);

}

7

329