Cockpit

The Cockpit class serves as the main entry point for the imperix Python API, establishing a connection to a running Cockpit application.

Using the class as a context manager (via the with Cockpit() as cockpit: syntax) is highly recommended to ensure the connection is safely released after execution:

from imperix import Cockpit

with Cockpit() as cockpit:
    targets = cockpit.targets.refresh()
    # The rest of the script...

API Reference

class imperix.Cockpit(*, default_timeout: float | None = 60.0, auto_start_cockpit: bool = True, cockpit_startup_timeout: float = 60.0)

Provides the interface to the Cockpit application.

Parameters:
  • default_timeout – Maximum time to wait for Cockpit operations in seconds. None disables the timeout. Defaults to 60.0.

  • auto_start_cockpit – If Cockpit is not yet running, launches a new instance. Defaults to True.

  • cockpit_startup_timeout – Maximum time in seconds to wait for a connection to the Cockpit instance. Defaults to 60.0.

projects

Returns the projects open in Cockpit

targets

Returns the imperix controllers detected by Cockpit.

Raises:

InvalidParamsError – If a timeout is not positive or default_timeout is not None or a positive number.

connect() Self

Opens the connection to Cockpit application.

Note: This method is called automatically when using the class as a context

manager (with Cockpit() as cockpit:), which is the recommended approach. If the ACG/CPP SDK is older than the Python library, a VersionMismatchWarning is emitted and the connection continues. If the Python library is older, the connection fails with VersionMismatchError.

Returns:

The Cockpit instance, allowing for method chaining

Raises:

Example:

cockpit = Cockpit()
cockpit.connect()
print(cockpit.system_version())
cockpit.close()
close() None

Closes the connection to Cockpit.

Note: This method is called automatically when using the class as a context manager (with Cockpit() as cockpit:), which is the recommended approach.

Raises:

CockpitConnectionError – If the underlying connection to Cockpit cannot be closed cleanly.

Example:

cockpit = Cockpit().connect()
try:
    # Perform all operations that need the same scripting session.
    cockpit.targets.refresh()
finally:
    cockpit.close()
set_logging_level(level: int | str) None

Sets the logging verbosity level for the library.

Parameters:

level – The desired logging level: "INFO" or "DEBUG".

Raises:

InvalidParamsError – If level is not a recognized logging level.

Example:

cockpit.set_logging_level("INFO")
disable_logging() None

Disable library logging.

Example:

cockpit.disable_logging()
wait(*, delay_ms: float) None

Blocks execution for a fixed duration.

Parameters:

delay_ms – Duration in milliseconds.

Raises:

InvalidParamsError – If delay_ms is not a non-negative number.

Example:

scope.play()
# Wait long enough for the scope pre-trigger rolling buffer to fill up.
cockpit.wait(delay_ms=1500.0)
project.variables["speed_ref"] = 1500.0
wait_until(predicate: Callable[[], object], *, timeout: float | None = 60.0, interval: float = 1.0) None

Blocks execution until a condition becomes true.

Polls the provided predicate every interval seconds. This is useful for waiting on target or module state changes, such as a scope capture completing.

Parameters:
  • predicate – A callable evaluated repeatedly. The wait ends as soon as this returns a truthy value.

  • timeout – Maximum wait time in seconds. None means wait forever. Defaults to 60.0.

  • interval – Time to wait between polls in seconds. Defaults to 1.0.

Raises:
  • TimeoutError – If the timeout is reached before the predicate returns a truthy value.

  • InvalidParamsError – If timeout is not positive or None, or if interval is not a non-negative number.

Example:

scope.play()
# Poll Cockpit until the armed scope has captured data.
cockpit.wait_until(scope.is_capture_done, timeout=10.0)
scope.export(r"C:\imperix\captures\scope_capture.mat")