DewesoftX#

class DewesoftX(dxd_name: str | None = None)[source]#

Bases: DAQDriverBase

Streams live sync and async channels from a running DewesoftX instance over DCOM.

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

Drop the COM references; the configured channels survive, and the next open() rebinds them.

close_relay

Close the relay (connect the circuit).

configure_ai_channel

Deprecated: implement configure_ai_voltage_channel instead.

configure_ai_current_channel

Same binding as voltage: DewesoftX channels carry their own units, so the HAL type only labels the alias.

configure_ai_hw_timing

Require the requested rate to be DewesoftX's own: InstroDAQ derives the batch size and buffer from it.

configure_ai_thermocouple_channel

Same binding as voltage; tc_type and CJC settings are ignored because DewesoftX owns sensor setup.

configure_ai_voltage_channel

Bind an existing DewesoftX channel by name; DewesoftX owns all channel setup.

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 samples arrive on every sync channel, then drain.

get_actual_sample_rate

The device's rate captured at configure time; None before configure_ai_sample_rate().

open

Attach to the running DewesoftX instance.

open_relay

Open the relay (disconnect the circuit).

read_analog

Drain every new sample from each bound channel.

read_digital_line

Sample a single DI line.

read_digital_port

Sample a multi-line DI port.

start

Listen for a session an operator starts, or with start_storing_session=True start one here.

stop

Leave the running session alone, or with stop_storing_session=True stop it.

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() → None[source]#

Attach to the running DewesoftX instance.

close() → None[source]#

Drop the COM references; the configured channels survive, and the next open() rebinds them.

start(**kwargs) → None[source]#

Listen for a session an operator starts, or with start_storing_session=True start one here.

stop(**kwargs) → None[source]#

Leave the running session alone, or with stop_storing_session=True stop it.

configure_ai_voltage_channel(
channel: AnalogVoltageChannel,
) → None[source]#

Bind an existing DewesoftX channel by name; DewesoftX owns all channel setup.

configure_ai_current_channel(
channel: AnalogCurrentChannel,
) → None[source]#

Same binding as voltage: DewesoftX channels carry their own units, so the HAL type only labels the alias.

configure_ai_thermocouple_channel(
channel: AnalogThermocoupleChannel,
) → None[source]#

Same binding as voltage; tc_type and CJC settings are ignored because DewesoftX owns sensor setup.

configure_ai_channel(
channel: AnalogChannel,
) → None[source]#

Deprecated: implement configure_ai_voltage_channel instead.

configure_ai_hw_timing(
hw_timing_config: HWTimingConfig,
) → None[source]#

Require the requested rate to be DewesoftX’s own: InstroDAQ derives the batch size and buffer from it.

get_actual_sample_rate() → float | None[source]#

The device’s rate captured at configure time; None before configure_ai_sample_rate().

read_analog() → DewesoftXData[source]#

Drain every new sample from each bound channel.

fetch_analog() → DewesoftXData[source]#

Block until samples_per_channel new samples arrive on every sync channel, then drain.

configure_di_line_channel(
physical_channel: str,
logic: Logic,
logic_level: float | None = None,
alias: str | None = 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,
) → None[source]#

Parse, program, and register a DO line channel.

write_digital_line(
channel: DigitalChannel,
data: int,
) → None[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,
) → None[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_ao_channel(channel: AnalogChannel)#

Deprecated: implement configure_ao_voltage_channel instead.

configure_ao_current_channel(
channel: AnalogCurrentChannel,
)#

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

configure_ao_voltage_channel(
channel: AnalogVoltageChannel,
)#

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

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.

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

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

points_in_buffer: int#