DAQDriverBase#

class DAQDriverBase[source]#

Bases: ABC

Vendor DAQ driver contract.

The driver is the single source of truth for configured channels and timing config, held in private dicts/slots that __init__ initializes so every concrete driver has the same shape; subclasses call super().__init__() and then populate those privates inside their own configure_* methods (self._ai_channels[channel.alias] = channel, self._ai_hw_timing_config = hw_timing_config, etc.). Read-only @property accessors hand back frozen snapshots so the state can’t be mutated from outside the configure_* path; InstroDAQ exposes the same snapshots for user introspection — it does not keep its own copies.

Attributes

ai_channels

Frozen snapshot of configured AI channels, keyed by alias.

ai_hw_timing_config

ao_channels

Frozen snapshot of configured AO channels, keyed by alias.

ao_hw_timing_config

channels

Frozen snapshot of all configured AI/AO/DI/DO channels (excludes relays).

di_channels

Frozen snapshot of configured DI channels, keyed by alias.

di_hw_timing_config

do_channels

Frozen snapshot of configured DO channels, keyed by alias.

do_hw_timing_config

relay_channels

Frozen snapshot of configured relay channels, keyed by alias.

points_in_buffer

Methods

close

Close every task/handle owned by the driver.

close_relay

Close the relay (connect the circuit).

configure_ai_channel

Deprecated: implement configure_ai_voltage_channel instead.

configure_ai_current_channel

Register an AI current channel.

configure_ai_hw_timing

Configure hardware-timed AI sampling at hw_timing_config.sample_rate.

configure_ai_thermocouple_channel

Register an AI thermocouple channel.

configure_ai_voltage_channel

Register an AI voltage channel with the underlying driver.

configure_ao_channel

Deprecated: implement configure_ao_voltage_channel instead.

configure_ao_current_channel

Register an AO current channel.

configure_ao_voltage_channel

Register an AO voltage channel.

configure_di_line_channel

Parse, program, and register a DI line channel.

configure_di_port_channel

Parse, program, and register a DI port channel.

configure_do_line_channel

Parse, program, and register a DO line channel.

configure_do_port_channel

Parse, program, and register a DO port channel.

define_relay_channel

Build a RelayChannel for physical_channel (e.g. "3101" = slot 3 / channel 101).

fetch_analog

Block until samples_per_channel new AI samples are available, then return them.

get_actual_sample_rate

Actual hardware sample rate achieved after start().

open

Open the underlying transport (or verify the device is present, for handle-less SDKs).

open_relay

Open the relay (disconnect the circuit).

read_analog

Software-timed read of every configured AI channel.

read_digital_line

Sample a single DI line.

read_digital_port

Sample a multi-line DI port.

start

Start hardware-timed acquisition.

stop

Stop a running acquisition and release any scan buffers.

write_analog_value

Write value to AO channel.

write_digital_line

Drive a single DO line.

write_digital_port

Drive a multi-line DO port.