HP (Hewlett-Packard) AHA-8940 Network Router User Manual


 
VXI Programming Using the IEEE 1394 Serial Bus 51Chapter 3
// set up byte swap function for readings transferred from
// E8491A shared memory to the PC
#define SWAP_FLOAT64(rdgs) \
{ unsigned char src[8]; \
*((double *)src) = *((double *)rdgs); \
((unsigned char *) (rdgs))[0] = ((unsigned char*) (src))[7]; \
((unsigned char *) (rdgs))[1] = ((unsigned char*) (src))[6]; \
((unsigned char *) (rdgs))[2] = ((unsigned char*) (src))[5]; \
((unsigned char *) (rdgs))[3] = ((unsigned char*) (src))[4]; \
((unsigned char *) (rdgs))[4] = ((unsigned char*) (src))[3]; \
((unsigned char *) (rdgs))[5] = ((unsigned char*) (src))[2]; \
((unsigned char *) (rdgs))[6] = ((unsigned char*) (src))[1]; \
((unsigned char *) (rdgs))[7] = ((unsigned char*) (src))[0]; \
}
// prototypes
void check(ViSession vi, ViStatus error);
void err_handler(ViSession vi, ViStatus err);
void main(void)
{
ViSession vi, defaultRM, fw;
ViStatus errStatus, err;
unsigned long start_addr;// starting address of shared memory
ViReal64 rdgs[8000];// array for readings from shared memory
int i;
ViChar err_message[256];
// open a VXIplug&play device session and reset the multimeter
errStatus = hpe1410_init(E1410,0,1,&vi);
if( VI_SUCCESS > errStatus)
{
hpe1410_error_message( vi, errStatus, err_message);
printf("Unable to open %s\n", E1410);
printf("hpe1410_init() returned error message %s\n", err_message);
return;
}
// open a VISA session to the E8491A
viOpenDefaultRM(&defaultRM);
viOpen(defaultRM,E8491, VI_NULL, VI_NULL, &fw);
// get E8491A shared memory base address
viGetAttribute(fw, VI_ATTR_MEM_BASE, &start_addr);
// enable multimeter error detection
hpe1410_errorQueryDetect(vi, 1);
// set a 5s timeout period to allow functions to complete
errStatus = hpe1410_timeOut(vi, 5000);
check(vi, errStatus);
// configure the multimeter for DCV measurements
errStatus = hpe1410_confVoltDc(vi);
check(vi, errStatus);