LabJackTSeriesDriver#

class LabJackTSeriesDriver(device_id: str, stream_buffer_bytes: int = 0)[source]#

Bases: DAQDriverBase

LabJack T-series DAQ driver (T4/T7/T8 via the LJM library).

Construct the driver.

Parameters:
  • device_id

    Device serial number, or “ANY” for the first device found.

  • stream_buffer_bytes

    Device-side stream buffer size, always written when AI hardware timing is configured so no value carries over from an earlier session. 0 selects the device’s own default. Must be a power of 2 and the max is 262144. Setting this prevents the device from dropping scans at high sample rates, which LJM reports as -9999 sample values.

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

Disconnect from LabJack device.

close_relay

Close the relay (connect the circuit).

configure_ai_channel

Deprecated: use configure_ai_voltage_channel.

configure_ai_current_channel

Register an AI current channel.

configure_ai_hw_timing

Configure hardware timing for the specified channels.

configure_ai_thermocouple_channel

Configure a thermocouple ai channel; volts convert to temperature in the channel's unit on read.

configure_ai_voltage_channel

Configure a voltage ai channel on the LabJack device.

configure_ao_channel

Deprecated: use configure_ao_voltage_channel.

configure_ao_current_channel

Register an AO current channel.

configure_ao_voltage_channel

Configure a voltage AO channel on the LabJack device.

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().

get_info

Get the LabJack device info.

open

Connect to LabJack device.

open_relay

Open the relay (disconnect the circuit).

read_analog

Read from analog input channels.

read_digital_line

Sample a single DI line.

read_digital_port

Sample a multi-line DI port.

start

Start the DAQ device for hw timed data acquisition.

stop

Stop the DAQ device.

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.

open()[source]#

Connect to LabJack device.

stop(**kwargs)[source]#

Stop the DAQ device.

close()[source]#

Disconnect from LabJack device.

get_info() → tuple[int, int, int, int, int, int][source]#

Get the LabJack device info.

configure_ai_channel(
channel: AnalogChannel,
)[source]#

Deprecated: use configure_ai_voltage_channel. Configures an ai channel on the LabJack device.

configure_ao_channel(
channel: AnalogChannel,
)[source]#

Deprecated: use configure_ao_voltage_channel. Configures an AO channel on the LabJack device.

configure_ai_voltage_channel(
channel: AnalogVoltageChannel,
)[source]#

Configure a voltage ai channel on the LabJack device.

configure_ao_voltage_channel(
channel: AnalogVoltageChannel,
)[source]#

Configure a voltage AO channel on the LabJack device.

configure_ai_current_channel(
channel: AnalogCurrentChannel,
)[source]#

Register an AI current channel. Override if the driver supports analog current input.

configure_ao_current_channel(
channel: AnalogCurrentChannel,
)[source]#

Register an AO current channel. Override if the driver supports analog current output.

configure_ai_thermocouple_channel(
channel: AnalogThermocoupleChannel,
)[source]#

Configure a thermocouple ai channel; volts convert to temperature in the channel’s unit on read.

range_min/range_max are ignored: the ADC range is fixed per model (T7 0.1 V, T8 0.075 V, T4 none).

configure_ai_hw_timing(
hw_timing_config: HWTimingConfig,
)[source]#

Configure hardware timing for the specified channels.

start(**kwargs)[source]#

Start the DAQ device for hw timed data acquisition.

read_analog() → LabJackData[source]#

Read from analog input channels.

fetch_analog() → LabJackData[source]#

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

Drivers should set self.points_in_buffer for buffer-depth telemetry and return dt (ns per sample) so the wrapper can build contiguous timestamps via HWTimestamper.

get_actual_sample_rate() → float | None[source]#

Actual hardware sample rate achieved after start().

Default returns None (driver doesn’t know or hasn’t started). Override on drivers whose SDK reports the effective rate (NI, MCC, LabJack T-series all do).

write_analog_value(
channel: AnalogChannel | AnalogVoltageChannel | AnalogCurrentChannel | AnalogThermocoupleChannel,
value: float,
)[source]#

Write value to AO channel. Override if the driver supports analog output.

configure_di_line_channel(
physical_channel: str,
logic: Logic,
logic_level: float | None = None,
alias: str | None = None,
)[source]#

Parse, program, and register a DI line channel.

configure_do_line_channel(
physical_channel: str,
logic: Logic,
logic_level: float | None = None,
alias: str | None = None,
)[source]#

Parse, program, and register a DO line channel.

write_digital_line(
channel: DigitalChannel,
data: int,
)[source]#

Drive a single DO line. data is 0 or 1 (active-low channel.logic is handled in the driver).

read_digital_line(
channel: DigitalChannel,
) → int[source]#

Sample a single DI line. Returns 0 or 1 after applying channel.logic.

write_digital_port(
channel: DigitalChannel,
data: int,
)[source]#

Drive a multi-line DO port. data is an N-bit integer; bit i controls line i.

read_digital_port(
channel: DigitalChannel,
) → int[source]#

Sample a multi-line DI port. Returns an N-bit integer; bit i reflects line i.

property ai_channels: Mapping[str, AnalogChannel | AnalogVoltageChannel | AnalogCurrentChannel | AnalogThermocoupleChannel]#

Frozen snapshot of configured AI channels, keyed by alias.

property ai_hw_timing_config: HWTimingConfig | None#
property ao_channels: Mapping[str, AnalogChannel | AnalogVoltageChannel | AnalogCurrentChannel | AnalogThermocoupleChannel]#

Frozen snapshot of configured AO channels, keyed by alias.

property ao_hw_timing_config: HWTimingConfig | None#
property channels: tuple[DAQChannel, ...]#

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

close_relay(
channel: RelayChannel,
)#

Close the relay (connect the circuit). Override if the driver supports relays.

configure_di_port_channel(
physical_channel: str,
logic: Logic,
port_width: DigitalPortWidth,
logic_level: float | None = None,
alias: str | None = None,
)#

Parse, program, and register a DI port channel. Override if the driver supports port-mode digital input.

configure_do_port_channel(
physical_channel: str,
logic: Logic,
port_width: DigitalPortWidth,
logic_level: float | None = None,
alias: str | None = None,
)#

Parse, program, and register a DO port channel. Override if the driver supports port-mode digital output.

define_relay_channel(
physical_channel: str,
alias: str | None = None,
) → RelayChannel#

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

Default implementation suits the Keysight 34980A’s slot/channel addressing; override if the driver needs different parsing. Overrides must also record the resulting channel on self._relay_channels.

property di_channels: Mapping[str, DigitalChannel]#

Frozen snapshot of configured DI channels, keyed by alias.

property di_hw_timing_config: HWTimingConfig | None#
property do_channels: Mapping[str, DigitalChannel]#

Frozen snapshot of configured DO channels, keyed by alias.

property do_hw_timing_config: HWTimingConfig | None#
open_relay(channel: RelayChannel)#

Open the relay (disconnect the circuit). Override if the driver supports relays.

property relay_channels: Mapping[str, RelayChannel]#

Frozen snapshot of configured relay channels, keyed by alias.

points_in_buffer: int#