hil_write hil_read_encoder_write_pwm navigation bar

hil_read_analog_write_analog

Reads from analog inputs and writes to analog outputs immediately.

Description

The hil_read_analog_write_analog function reads from the specified analog input channels and writes to the specified analog output channels in a single function call. The write operation occurs immediately following the read operation. Since the read-write operation occurs at the lowest level the read and write occur virtually concurrently. The function does not return until the data has been read and written.

Prototype

t_error 
hil_read_analog_write_analog(t_card card, 
                             const t_uint32 analog_input_channels[],  t_uint32 num_analog_input_channels, 
                             const t_uint32 analog_output_channels[], t_uint32 num_analog_output_channels, 
                             t_double       analog_input_buffer[],
                             const t_double analog_output_buffer[]);
    

Parameters

t_card card

A handle to the board, as returned by hil_open

const t_uint32 [] analog_input_channels

An array containing the channel numbers of the analog inputs to be read.

Select a board type from the list for board-specific details: .

t_uint32 num_analog_input_channels

The number of channels specified in the analog_input_channels array.

const t_uint32 [] analog_output_channels

An array containing the channel numbers of the analog outputs to be written.

Select a board type from the list for board-specific details: .

t_uint32 num_analog_output_channels

The number of channels specified in the analog_output_channels array.

t_double [] analog_input_buffer

An array for receiving the voltage values read from the analog inputs. The array must contain num_analog_input_channels elements. Each element in the returned analog_input_buffer array will correspond to the same element in the analog_input_channels array.

const t_double [] analog_output_buffer

An array of voltage values to write to the analog outputs. The array must contain num_analog_output_channels elements. Each element in the analog_output_buffer array corresponds to the same element in the analog_output_channels array.

Return value

The return value is 0 if the I/O operation is performed successfully. Otherwise a negative error code is returned. Error codes are defined in quanser_errors.h. A suitable error message may be retrieved using msg_get_error_message.

Error codes

QERR_HIL_READ_ANALOG_WRITE_ANALOG_NOT_SUPPORTED

This function is not supported by the board-specific HIL driver for this board type.

QERR_INVALID_CARD_HANDLE

An invalid card handle was passed as an argument. Once a card has been closed using hil_close the card handle is invalid.

QERR_TOO_MANY_ANALOG_INPUT_CHANNELS

Too many analog input channels were specified.

QERR_INVALID_ANALOG_INPUT_CHANNEL

One of the analog input channels that was specified is not a valid channel number. Channel numbers range from 0 to one less than the number of channels.

QERR_ANALOG_RESOURCE_IN_USE

The analog-to-digital converter on the HIL board is currently in use by another operation.

QERR_TOO_MANY_ANALOG_OUTPUT_CHANNELS

Too many analog output channels were specified.

QERR_INVALID_ANALOG_OUTPUT_CHANNEL

One of the analog output channels that was specified is not a valid channel number. Channel numbers range from 0 to one less than the number of channels.

QERR_DRIVER_INCOMPATIBLE_WITH_BOARD_DLL

The board-specific HIL driver passed an invalid parameter to the operating system specific kernel-level driver for the board. The board-specific HIL driver is likely not compatible with the operating system specific kernel-level driver for the board. Make sure both are up-to-date and compatible versions.

QERR_INTERNAL_BUFFER_TOO_SMALL

The board-specific HIL driver used an internal buffer that was too small for the operating system specific kernel-level driver for the board. The board-specific HIL driver is likely not compatible with the operating system specific kernel-level driver for the board. Make sure both are up-to-date and compatible versions.

QERR_OUT_OF_REQUIRED_SYSTEM_RESOURCES

There are not enough system resources to perform the requested operation. Try rebooting, requesting fewer samples, or adding more memory to your machine.

Requirements

Include Files

Libraries

hil.h

hil.lib;quanser_runtime.lib;quanser_common.lib

Examples


/*
* Read the first four analog input channels and writes
* to the first two analog output channels.
*/

t_uint32 input_channels[]  = { 0, 1, 2, 3 };
t_double input_buffer[4];

t_uint32 output_channels[] = { 0, 1 };
t_double output_buffer[]   = { 0.5, 1.5 };

t_error result = hil_read_analog_write_analog(board
    , input_channels,  ARRAY_LENGTH(input_channels)
    , output_channels, ARRAY_LENGTH(output_channels)
    , input_buffer
    , output_buffer
);    

 

navigation bar