Rockwell Automation 5370 CVIM Communications Manual User Manual
Page 70

Chapter 4
Using the Remote I/O Link
(Node Adapter)
4–33
/* display msg for program monitoring */
printf (”get_CVIM_block %d(%d)\n”,block_type, block_num);
/* Tell CVIM block number and type */
g_oit[8*CVIM_rack + 3] = block_type + block_num * 256;
/* Initiate the block transfer read */
block_pkt.qbt_len = 0; /* request 0 words */
status = bt_read(16*CVIM_rack,&block_pkt);
err = (status != OK);
if (!err)
{
/* wait for completion of BTR */
while (!bt_done(&block_pkt));
err = (block_pkt.qbt_stat != SC_OK);
if (!err)
{
/* store the block data and length */
*length = block_pkt.qbt_len;
memcpy (data, block_pkt.qbt_data, *length * 2);
}
}
return (err);
}
int send_CVIM_block (CVIM_rack, block_type, block_num, data, length)
unsigned CVIM_rack, block_type, block_num, *data, *length;
/* performs a BTW (write) to the CVIM */
{
static QBT block_pkt;
unsigned err, status,x;
/* display msg for program monitoring */
printf (”send_CVIM_block %d(%d)\n”,block_type, block_num);
/* Tell CVIM block number and type */
g_oit[8*CVIM_rack + 3] = block_type + block_num * 256;
/* Initiate the block transfer write */
block_pkt.qbt_len = *length;
memcpy (block_pkt.qbt_data, data, *length * 2);
status = bt_write(16*CVIM_rack,&block_pkt);
err = (status != OK);
if (!err)
{
/* wait for completion of BTW */
while (!bt_done(&block_pkt));
err = (block_pkt.qbt_stat != SC_OK);
}
return (err);
}