{"library":"logic2-automation","title":"Saleae Logic 2 Automation API","description":"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.","language":"python","status":"active","last_verified":"Fri Apr 17","install":{"commands":["pip install logic2-automation"],"cli":null},"imports":["from saleae import automation"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom saleae import automation\nimport time\n\n# IMPORTANT: Ensure the Logic 2 application is running and\n# the Automation API is enabled in its preferences.\n# You can find your device ID in Logic 2 under Options -> Automation API.\n# Alternatively, use manager.get_connected_devices() to list available devices.\nDEVICE_ID = os.environ.get('SALEAE_DEVICE_ID', 'F40105001221') # Replace with your device ID\n\ntry:\n    with automation.Manager() as manager:\n        print(f\"Connected to Logic 2, API version: {manager.get_api_version()}\")\n\n        # Add a connected device. Configuration must match device capabilities.\n        manager.add_connected_device(\n            automation.DeviceConfiguration(\n                device_id=DEVICE_ID,\n                channel_grouping=automation.ChannelGrouping.GROUP_BY_CABLE,\n                digital_channels=[0, 1],\n                analog_channels=[0],\n            )\n        )\n        print(f\"Device {DEVICE_ID} configured.\")\n\n        # Start a 1-second capture at 1MS/s\n        capture = manager.start_capture(\n            device_id=DEVICE_ID,\n            settings=automation.CaptureSettings(\n                sample_rate=1_000_000,\n                duration_seconds=1.0\n            )\n        )\n        print(f\"Capture started. Waiting for completion... Session file: {capture.filepath}\")\n\n        # Export raw digital data to a directory\n        output_dir = f\"raw_capture_digital_{int(time.time())}\"\n        os.makedirs(output_dir, exist_ok=True)\n        capture.export_raw_data_to_directory(\n            directory_path=output_dir,\n            digital_channels=[0, 1]\n        )\n        print(f\"Raw digital data exported to: {output_dir}\")\n\n    print(\"Automation complete and session manager closed.\")\n\nexcept automation.LalError as e:\n    print(f\"Logic 2 Automation API Error: {e}\")\n    print(\"Please verify Logic 2 is running, API is enabled, and device/channel configs are correct.\")\nexcept ConnectionRefusedError:\n    print(\"Error: Connection refused. Is the Logic 2 application running and the Automation API enabled?\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"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.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}