quanser.hardware.task.write_pwm quanser.hardware.task.write_other navigation bar

Table of Contents

write_digital

Writes the specified digital samples to the task's internal buffer.

Syntax

[samples_written, err] = task.write_digital(values)
    

Description

Writes the specified digital samples to the task's internal buffer. The number of samples is determined by the number of columns in the values matrix and must be less than or equal to the internal buffer size assigned to the task in the quanser.hardware.hil.task_create_digital_writer or quanser.hardware.hil.task_create_digital_reader_digital_writer call. This function will block until the requested number of samples can be written or the task is stopped. Note that the 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.

Warning 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 outputs must be configured as outputs using this function. Failure to configure the digital I/O may result in the task.write_digital function failing to write those outputs.

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.

Parameters

task

Task instance returned by quanser.hardware.hil.task_create_digital_writer or quanser.hardware.hil.task_create_digital_reader_digital_writer.

values

A matrix of digital values. There must be one row for each channel and one column for each sample.

Outputs

samples_written

The number of samples written. This number will be equal to the number of samples specified unless the total number of samples specified in task.start has expired or the task has been stopped.

err

A negative error code or zero on success.

Examples

% Creates a task to write to digital channels 0 and 3, with an internal buffer of 1000 samples.
task = board.task_create_digital_writer(1000, [0 3]);

% Uniformly distributed random values between -5V and +5V.
values = 5*(rand(2,500)-0.5)*2;

% Writes 500 samples to digital channels 0 and 3. Won't block until internal buffer full.
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
    % Uniformly distributed random values between -5V and +5V.
    values = 5*(rand(2,500)-0.5)*2;

    % Writes 500 samples to digital channels 0 and 3. Won't block until internal buffer full.
    n = task.write_digital(values);
    ...
end;

% Make sure any samples remaining in the internal buffer have been written to the outputs.
task.flush;
task.stop;
task.close;
    

See Also

 

navigation bar