2635A
Users Manual
F-6
hydra.chan[ch].function = *file_data++;
hydra.chan[ch].range = *file_data++;
hydra.chan[ch].temperature = *file_data++;
hydra.chan[ch].alarm_flags = *file_data++;
file_data += convert_float(&hydra.chan[ch].alarm_limit_1,
file_data);
file_data += convert_float(&hydra.chan[ch].alarm_limit_2,
file_data);
hydra.chan[ch].alarm_assoc_1 = *file_data++;
hydra.chan[ch].alarm_dr_1 = *file_data++;
hydra.chan[ch].alarm_assoc_2 = *file_data++;
hydra.chan[ch].alarm_dr_2 = *file_data++;
file_data += convert_float(&hydra.chan[ch].m, file_data);
file_data += convert_float(&hydra.chan[ch].b, file_data);
hydra.chan[ch].m_dr = *file_data++;
hydra.chan[ch].b_dr = *file_data++;
file_data += convert_float(&hydra.chan[ch].rtd_r0, file_data);
/* Create index to channel conversion table */
if (hydra.chan[ch].function != 0) {
index_to_chan[max_index++] = ch;
}
}
/* Ignore trailing CRC bytes */
/* return number of bytes per scan record */
return (4 * max_index + 12);
}
/*
-* convert_float(): Convert binary data stream to a floating point variable
**
** This routine assumes that both input and output are four-byte IEEE
** single-precision data in the DOS (Intel x86) architecture. This
** is very machine dependent. You may need to change this routine to
** fit the needs of your architecture.
**
** Inputs:
** float_dest Pointer to C floating point variable (destination).
** src Pointer to four bytes of binary file data.
**
** Outputs:
** float_dest Set to a floating point value.
**
** Returns:
** Number of bytes consumed (4)
*/
int
convert_float(float * dest, unsigned char * src)
{
unsigned char * byte_dest = (unsigned char *) dest;
*byte_dest++ = *src++;
*byte_dest++ = *src++;
*byte_dest++ = *src++;
*byte_dest = *src;
return sizeof(float);
}