Saleae Logic 2 Automation API

1.0.11 · active · verified Fri Apr 17

The `logic2-automation` library provides a Pythonic interface for controlling the Saleae Logic 2 application via its Automation API. It enables users to programmatically connect to Saleae devices, configure captures, start/stop data acquisition, add analyzers, and export data. The current version is 1.0.11, and releases are generally made on an as-needed basis to support new features or fix bugs.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart connects to the Saleae Logic 2 application, configures a specified device, starts a one-second capture, and then exports the raw digital data. It demonstrates the use of the `Manager` context manager for connection management and includes error handling for common issues.

import os
from saleae import automation
import time

# IMPORTANT: Ensure the Logic 2 application is running and
# the Automation API is enabled in its preferences.
# You can find your device ID in Logic 2 under Options -> Automation API.
# Alternatively, use manager.get_connected_devices() to list available devices.
DEVICE_ID = os.environ.get('SALEAE_DEVICE_ID', 'F40105001221') # Replace with your device ID

try:
    with automation.Manager() as manager:
        print(f"Connected to Logic 2, API version: {manager.get_api_version()}")

        # Add a connected device. Configuration must match device capabilities.
        manager.add_connected_device(
            automation.DeviceConfiguration(
                device_id=DEVICE_ID,
                channel_grouping=automation.ChannelGrouping.GROUP_BY_CABLE,
                digital_channels=[0, 1],
                analog_channels=[0],
            )
        )
        print(f"Device {DEVICE_ID} configured.")

        # Start a 1-second capture at 1MS/s
        capture = manager.start_capture(
            device_id=DEVICE_ID,
            settings=automation.CaptureSettings(
                sample_rate=1_000_000,
                duration_seconds=1.0
            )
        )
        print(f"Capture started. Waiting for completion... Session file: {capture.filepath}")

        # Export raw digital data to a directory
        output_dir = f"raw_capture_digital_{int(time.time())}"
        os.makedirs(output_dir, exist_ok=True)
        capture.export_raw_data_to_directory(
            directory_path=output_dir,
            digital_channels=[0, 1]
        )
        print(f"Raw digital data exported to: {output_dir}")

    print("Automation complete and session manager closed.")

except automation.LalError as e:
    print(f"Logic 2 Automation API Error: {e}")
    print("Please verify Logic 2 is running, API is enabled, and device/channel configs are correct.")
except ConnectionRefusedError:
    print("Error: Connection refused. Is the Logic 2 application running and the Automation API enabled?")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

view raw JSON →