User`s manual
142 Register-Based Programming
Beginning of Program
/* This program reads the ID Register, reads the Device Type Register, */
/* reads the Status Register, reads the modules bank 0 Register, */
/* and closes channels 000 and 001. */
/* (Visual C/C++ program using Agilent VISA I/O calls.) */
#include <visa.h>
#include <stdio.h>
#include <stdlib.h>
/* Function prototype */
void err_handler();
Program Main
void main(void)
{ viSession defaultRM,mux;
unsigned short id_reg, dt_reg; /* ID and Device Type Registers */
unsigned short stat_reg, bank0_ch; /* status reg and bank 0 reg */
/* create and open a device session */
ViStatus err;
ViOpenDefaultRM(&defaultRM);
/*** GPIB card address 9, MUX logical address 112 ***/
viOpen(defaultRM,”GPIB0::9::14::INSTR”,VI_NULL,VI_NULL,&mux);
Read ID and Device Type Registers
/********* read the multiplexer's ID and Device Type registers *********/
err=viIn16(mux,VI_A16_SPACE, 0x00,&id_reg);
if(err<VI_SUCCESS) err_handler(mux,err);
printf(“ID Register=0x%4X\n”,id_reg);
err=viIn16(mux,VI_A16_SPACE, 0x02,&id_reg);
if(err<VI_SUCCESS) err_handler(mux,err);
printf(“Device Type Register=0x%4X\n”,dt_reg);
Read Status Register
/**************** read the multiplexer's status register **************/
err=viIn16(mux,VI_A16_SPACE, 0x04,&stat_reg);
if(err<VI_SUCCESS) err_handler(mux,err);
printf(“Status Register=0x%4X\n”,stat_reg);
Read Bank 0 Control Register
/******************** read bank 0 ch 000-015 register *******************/
err=viIn16(mux,VI_A16_SPACE, 0x20,&bank0_ch);
if(err<VI_SUCCESS) err_handler(mux,err);
printf(“Bank 0 ch 000-015 Register value =0x%4X\n”,bank0_ch);
Scan channels
/********************** clos channels 000 & 001 **********************/
err=viIn16(mux,VI_A16_SPACE, 0x20,&bank0_ch);
if(err<VI_SUCCESS) err_handler(mux,err);