dio_memory_read_c

	status.i4.v = dio_memory_read_c(num_devices.i4.v,
					device_indices.i4a.r,
					properties.i2a.r, lengths.i4a.r,
					offsets.i4a.r, values.r8a.r,
					units_text.i1a.r, errors.i2a.r,
					values_per_dev.i4a.r, options.u4.v)

	This routine returns scaled data from the current DIO memory pool.

	num_devices	number of devices requesting data
	device_indices	device indices
	properties	property indices (constants are in 'dbprops')
			(PRREAD -> reading property,
			 PRSET -> setting property)
	lengths		data lengths in bytes
	offsets		data offsets in bytes 
	values		returned scaled values
	units_text	returned units text
			(LEN_DEV_UNITS characters per device)
	errors		returned device errors
	values_per_dev	returned number of values per device
			(A value of NULL can be passed for this argument if
			 this information is not needed.)
	options		reading options
			(DIO_OPT_NONE -> no options selected,
			 DIO_OPT_NO_POPULATE -> don't autopopulate the memory
						pool during this read)

	This function returns ACNET status values as follows:

	OK			success
	negative value		overall ACNET error
	positive value		number of devices in error

	This function requires the following include files:

	dbprops_h, diolib_h, acnet_errors_h

	Related functions:

	dio_memory_get_c, dio_memory_read_raw_c, dio_memory_get_raw_c,
	dio_memory_get_array_c, dio_memory_set_populate_c,
	dio_memory_get_directed_raw_c, dio_memory_set_raw_c,
	dio_memory_write_c, dio_memory_set_c, dio_memory_set_array_c,
	dio_memory_control_c, dio_memory_cancel_c, dio_memory_populate_c,
	dio_memory_populate_query, dio_memory_pool_name_to_id_c,
	error_in_list(_c)

	C/C++ usage:

	char	units[NUM_DEVICES][LEN_DEV_UNITS];
	short	errors[NUM_DEVICES];
	static const short	properties[NUM_DEVICES] = {PRSET, PRSET};
	static const short	lengths[NUM_DEVICES] = {0, 0};
	static const short	offsets[NUM_DEVICES] = {0, 0};
	int	status;
	int	num_devices = NUM_DEVICES;
	static const int	device_indices[NUM_DEVICES] = {14430, 14431};
	int	values_per_dev[NUM_DEVICES];
	unsigned int	options = 0;
	double	values[NUM_DEVICES];

	status = dio_memory_read_c(num_devices,device_indices,properties,
				   lengths,offsets,values,(char *) units_text,
				   errors,values_per_dev,options);