Table of Contents
quanser.hardware.task.read_digital_write_digital
Reads the specified number of digital samples and writes the specified number of digital samples to the task's internal buffer.
[input_values, samples_read, err] = task.read_digital_write_digital(num_samples, output_values)
Reads the specified number of digital samples and writes the specified number of digital samples to the task's internal buffer. This function will block until the requested number of samples have been read or can be written or the task is stopped. Note that the written samples are only transferred to the internal buffer. The samples may not appear at the outputs until later. Use task.flush to wait for all samples to be written to the outputs.
Many cards allow the digital I/O lines to be programmed as inputs or outputs. The digital I/O lines are configured as inputs or outputs using the quanser.hardware.hil.set_digital_directions function. All the channels which will be used as digital inputs or outputs must be configured accordingly using this function. Failure to configure the digital I/O may result in the task.read_digital_write_digital function failing to read or write the digital I/O as expected.
If no err output is provided then it throws an exception if an error occurs. In generated code it prints the error message. Use hil_get_error_message to get the message associated with an error code.
task
Task instance returned by quanser.hardware.hil.task_create_digital_reader_digital_writer.
num_samples
The number of samples to read and write. This number must be less than or equal to the internal buffer size assigned to the task in the hil_task_create_digital_reader_digital_writer call.
output_values
A matrix of digital values to write. There must be one row for each channel and one column for each sample.
input_values
A matrix of digital values read, as int8s. There is one row for each channel and one column for each sample.
samples_read
The number of samples written. This number will be equal to the number of samples specified unless the total number of samples specified in hil_task_start has expired or the task has been stopped.
err
A negative error code or zero on success.
% Creates a task to read digital channel 5, and write to digital channels 0 and 3, with an internal buffer of 1000 samples. task = board.task_create_digital_reader_digital_writer(1000, [0 3], 5); % Random logical values. values = (rand(1,500) >= 0.5); % Writes 500 samples to digital channel 5. Won't block. task.write_digital(values); % Start the task using SYSTEM_CLOCK_1 at 1 kHz. Collect up to 5000 samples. task.start(-1, 1000, 5000); for i=1:10 % Random logical values. values = (rand(1,500) >= 0.5); % Reads 500 samples from digital channels 0 and 3 and writes 500 samples to digital channel 5. [v, n] = task.read_digital_write_digital(500, duty); ... end; % Make sure any samples remaining in the internal buffer have been written to the outputs. task.flush; task.stop; task.close;
See Also
Copyright ©2024 Quanser Inc. This page was generated 2024-10-17. Submit feedback to Quanser about this page.
Link to this page.