Skip to main content

DaqCapture

Struct DaqCapture 

Source
pub struct DaqCapture {
    pub busy: bool,
    pub active: bool,
    pub error: bool,
    pub error_message: String,
    pub data: Option<CaptureData>,
    /* private fields */
}
Expand description

DAQ Capture function block for NI triggered recordings.

Fields§

§busy: bool

True while the FB is executing (from arm through data retrieval).

§active: bool

True when the DAQ is armed and waiting for the hardware trigger.

§error: bool

True when an error occurred.

§error_message: String

Error description (empty when no error).

§data: Option<CaptureData>

Captured data. Some after a successful capture, None otherwise.

Implementations§

Source§

impl DaqCapture

Source

pub fn new(daq_fqdn: &str) -> Self

Create a new DaqCapture function block.

Source

pub fn is_busy(&self) -> bool

The FB is busy running — either a capture is in flight or one or more channels are still inside their tare averaging window.

Source

pub fn is_taring(&self) -> bool

True while one or more channel tare commands issued through this FB are still inside their averaging window. Useful for a control program that wants to gate Start on “all tares complete” specifically rather than general FB busy.

Source

pub fn is_error(&self) -> bool

The last requested command resulted in an error.

Source

pub fn start(&mut self, client: &mut CommandClient)

Start a new capture sequence (Arm the DAQ).

Source

pub fn reset(&mut self)

Stop/Cancel the capture and return to idle. Also drops any pending tare bookkeeping so the FB reports not-busy immediately; tares that have already started on the module side will still complete their averages — this only forgets them here.

Source

pub fn tare<S: AsRef<str>>( &mut self, channels: &[S], duration_ms: Option<u32>, client: &mut CommandClient, )

Tare one or more channels. For each channel, sends <module>.<channel>.tare with the given duration and marks this FB busy until the averaging window has elapsed. duration_ms = None lets the module use its 1000 ms default.

Channel names are the same strings configured in ni.config.daq[].channels / ni.config.tasks[].channels[].name (e.g., "tsdr_fz", "enc_x"). The module prefix is taken from the daq_fqdn passed to [new]. Channels do NOT have to all belong to this DAQ — tare is a per-channel operation on the module and the FB just acts as a convenient dispatcher.

Silently ignored while a capture is in flight (state ≠ Idle). Safe to call while other tares are still pending — the new channels are appended to the pending list.

§Example
if !self.daq.is_busy() {
    self.daq.tare(&["tsdr_fx", "tsdr_fy", "tsdr_fz"], None, ctx.client);
}
// later…
if !self.daq.is_busy() {
    self.daq.start(ctx.client); // tares finished, safe to arm
}
Source

pub fn clear_tare<S: AsRef<str>>( &mut self, channels: &[S], client: &mut CommandClient, )

Fire-and-forget: reset the tare offset on one or more channels to 0. Does not affect is_busy(); the module applies the change on its next callback. Safe to call any time.

Source

pub fn set_trigger_delay(&mut self, client: &mut CommandClient, delay_ms: u32)

Update the Timer-trigger delay for this DAQ.

Only valid when the FB is idle (i.e. before start() is called or after the capture has completed). If called while the FB is busy, the request is silently dropped — call reset() first if you need to abort and reconfigure. The change is also rejected server-side if the DAQ has been armed by another caller.

Has no effect on DAQs whose trigger type is not timer.

Source

pub fn tick(&mut self, timeout_ms: u32, client: &mut CommandClient)

Execute one scan cycle of the DAQ capture state machine.

Trait Implementations§

Source§

impl Default for DaqCapture

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V