User`s guide
Programming via GPIB and VXI 4
Agilent VISA User’s Guide 103
/*
================================================
=
Using viPeek
================================================
*/
Read instrument id register contents */
viPeek16 (vi, address, &id_reg);
/* Read device type register contents
ViAddr is defined as a (void *) so we must
cast it to something else in order to do
pointer arithmetic. */
viPeek16 (vi, (ViAddr)((ViUInt16 *)address +
0x01),&devtype_reg);
/* Print results */
printf (" viPeek16: ID Register = 0x%4X\n",
id_reg);
printf (" viPeek16: Device Type Register =
0x%4X\n",devtype_reg);
/* Use direct memory dereferencing if
supported */
viGetAttribute( vi, VI_ATTR_WIN_ACCESS,
&accessMode );
if ( accessMode == VI_DEREF_ADDR ) {
/* assign pointer to variable of correct
type */
memPtr16 = (unsigned short *)address;
/* do the actual memory reads */
id_reg = *memPtr16;
devtype_reg = *(memPtr16+1);
/* Print results */
printf ("dereference: ID Register =
0x%4X\n",id_reg);
printf ("dereference: Device Type Register
=0x%4X\n", devtype_reg);
}