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: boolTrue while the FB is executing (from arm through data retrieval).
active: boolTrue when the DAQ is armed and waiting for the hardware trigger.
error: boolTrue when an error occurred.
error_message: StringError description (empty when no error).
data: Option<CaptureData>Captured data. Some after a successful capture, None otherwise.
Implementations§
Source§impl DaqCapture
impl DaqCapture
Sourcepub fn is_busy(&self) -> bool
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.
Sourcepub fn is_taring(&self) -> bool
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.
Sourcepub fn start(&mut self, client: &mut CommandClient)
pub fn start(&mut self, client: &mut CommandClient)
Start a new capture sequence (Arm the DAQ).
Sourcepub fn reset(&mut self)
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.
Sourcepub fn tare<S: AsRef<str>>(
&mut self,
channels: &[S],
duration_ms: Option<u32>,
client: &mut CommandClient,
)
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
}Sourcepub fn clear_tare<S: AsRef<str>>(
&mut self,
channels: &[S],
client: &mut CommandClient,
)
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.
Sourcepub fn set_trigger_delay(&mut self, client: &mut CommandClient, delay_ms: u32)
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.
Sourcepub fn tick(&mut self, timeout_ms: u32, client: &mut CommandClient)
pub fn tick(&mut self, timeout_ms: u32, client: &mut CommandClient)
Execute one scan cycle of the DAQ capture state machine.