HP VXI manual Example Program

Page 19

Example Program

/* status2.c *

*The following program provides an interactive command line interface

*to send SCPI commands to SCPI compatible instruments.

*This utilizes the MAV bit of the Status Byte in order to determine if

*the instrument is returning any output. It also automatically

*displays any error conditions that may result by querying the Standard

*event status register. */

#include <sicl.h> #include <stdio.h>

/* Theses are Masks for the Status Byte */

 

 

/* all bits start at

bit 0

*/

 

 

#define MAV_MASK 0x10

 

/* MAV - bit 4

*/

 

#define ESR_MASK 0x20

 

/* ESR summary

- bit 5

*/

/* These are Masks for the

Standard Event

Status Register */

/* all bits start at

bit 0

*/

 

 

#define QRY_ERR_MASK

0x04

/* query error

- bit 2

*/

#define DEV_ERR_MASK

0x08

/* device dependent error - bit 3 */

#define EXE_ERR_MASK

0x10

/* execution error - bit 4 */

#define CMD_ERR_MASK

0x20

/* command error - bit

5 */

/* This is the SRQ handler to check for Message Available (MAV)

*or any error conditions */ void srq_hdlr( INST id)

{

unsigned char stb; char buf[255]; int esr;

int errnum;

char errmsg[100];

/* read the status byte to determine what caused the SRQ.

*Note: use ireadstb instead of *STB? because we want to

*clear RQS instead of reading the MSS bit in the status byte. */ ireadstb(id, &stb);

/* check if MAV caused the SRQ */ if( MAV_MASK == (stb & MAV_MASK))

{

/* message is available so read in the result */ iscanf( id, "%t", buf);

printf("%s", buf);

}

else /* check if Standard Event Status */ if( ESR_MASK == (stb & ESR_MASK))

{

/* read the standard event register to determine

*what caused the ESR summary bit to be set. This

*is necessary in order to get future SRQ’s from

*the Standard Event status group. */

ipromptf(id, "*ESR?\n", "%d\n", &esr);

/* check if an error caused the summary bit to get set */ if( (CMD_ERR_MASK == (esr & CMD_ERR_MASK ))

(EXE_ERR_MASK == (esr & EXE_ERR_MASK )) (DEV_ERR_MASK == (esr & DEV_ERR_MASK ))

Chapter 2

Programming the Status System 19

Image 19
Contents Contents Comments Example QUEStionableEVENt? Printing History This Page Intentionally Left Blank Introduction Introduction Chapter General Status Register Model About this ChapterAn Example Sequence Condition Register Transition Filter Event RegisterPage Required Status Groups Status Byte Register Status Byte Bit Definitions Standard Event GroupStandard Operation Status Group Questionable Data Group Status System Programming Examples Handling SRQs Using MAV to Determine When Data is AvailableExample Program SRQ Icloseid Example Program Deverrmask Qryerrmask Chapter Programming the Status System Programming the Status System Chapter Command Reference STATus OPERationENABleOPERation CONDition? QUEStionable CONDition? OPERationENABle?PRESet OPERationEVENt?QUEStionableENABle? QUEStionableENABleQUEStionableEVENt? STATQUESEVEN? CLS Common Command ReferenceESR? EMC?ESE mask ESE?LMC? IDN?LRN? RST OPCOPC? PMCTST? SRE maskSRE? STB?WAI Command Reference Chapter