/****************************************************************************/ void initiate(void)

{

int i = 0, readings = 40, swap = 0, bytes = 0, length = 1, *rdgs; float rdy;

char lf_remove[1];

/* dynamically allocate memory for readings */

rdgs = malloc(40 * sizeof(float));

/* allocate computer memory for reading storage */

swap = sizeof(int);

/* each reading in memory is two bytes */

bytes = 40 * swap;

/* read 80 bytes */

IOOUTPUTS(ADDR_MEM, "INIT", 4);

/* initiate the memory card */

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

/* wait for INIT to parse before continuing */

IOENTER(ADDR_MEM, &rdy);

/* enter *OPC? response from memory card */

IOOUTPUTS(ADDR_G, "INIT", 4);

/* initiate the generator digitizer */

IOOUTPUTS(ADDR_I, "INIT", 4);

/* initiate the inserter digitizer */

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

/* wait for generator digitizer readings */

IOENTER(ADDR_G, &rdy);

/* to complete */

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);

IOOUTPUTS(ADDR_G, "ABOR", 4);

/* abort generator digitizer */

IOOUTPUTS(ADDR_I, "ABOR", 4);

/* abort inserter digitizer */

/* convert and display the readings; the reading sequence is: */ /* inserter digitizer channel 2 reading 1 */

/* inserter digitizer channel 1 reading 1 */ /* generator digitizer channel 2 reading 1 */ /* generator digitizer channel 1 reading 1 */

/* inserter digitizer channel 2 reading 2 and so on */

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

{

rdgs[i] /= 16;

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

Appendix D

Local Bus Interleaved Transfers 411

Page 411
Image 411
HP E1429A manual Iooutputsaddrmem, *Opc?, IOOUTPUTSADDRG, Abor, IOOUTPUTSADDRI, Abor