IOOUTPUTS(ADDR_I, "INIT", 4);

/* initiate the inserter digitizer */

IOOUTPUTS(ADDR_G, "*OPC?",5);

/* wait for generator digitizer to finish */

IOENTER(ADDR_G, &rdy);

 

IOOUTPUTS(ADDR_MEM, "TRAC:DATA? SET1", 15); /* retrieve readings from memory card

*/

IOENTERAB(ADDR_MEM, rdgs, &bytes, swap); /* enter readings and remove block header

*/

/* remove line feed which trails the last data byte */

IOENTERS(ADDR_MEM, lf_remove, &length);

/* convert and display readings; the inserter digitizer readings */ /* occur first, followed by the generator digitizer readings */

for (i = 0; i < readings; i++)

{

rdgs[i] /= 16;

if (rdgs[i] >= 2047 rdgs[i] <= -2046) printf("\nReading overrange");

else

printf("\nReading %d = %.6E", i, (rdgs[i] * 0.0025));

}

free(rdgs);

}

/****************************************************************************/ long get_base_addr(void)

{

/* base address of generator digitizer’s (A24) offset register in A16 */ /* address space */

long base_addr = (0x1FC000 + (40 * 64)) + 6; /* generator digitizer logical address is 48 */

float a24offst;

/* A24 offset from A16 offset register */

char rd_addr[80];

/* command string variable */

/* Create the command string which reads the A24 base address from the offset register */ sprintf(rd_addr, "DIAG:PEEK? %ld, %d", base_addr,16);

/* Send DIAG:PEEK? command */ IOOUTPUTS(CMD_MOD, rd_addr, strlen(rd_addr));

Continued on Next Page

Chapter 2

Using the Digitizer 97

Page 97
Image 97
HP E1429A manual IOOUTPUTSADDRI, Init, IOOUTPUTSADDRG, *OPC?,5