逻辑分析仪自动化接口

为Saleae逻辑分析仪提供远程控制和自动化接口,支持设备配置、数据捕获、协议解码和可视化分析。

  • by wegitor
  • Python
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 wegitor/logic-analyzer-ai-mcp

使用说明

逻辑分析仪 MCP

此项目为Saleae逻辑分析仪提供了一个MCP(消息控制协议)服务器和自动化接口。它实现了对Saleae Logic设备和捕获功能的远程控制、自动化操作以及集成,使得通过编程来脚本编写、管理和分析逻辑分析仪数据变得轻而易举。

特点/特性

  • 设备配置管理
  • 捕获配置和执行
  • 以多种格式导出数据
  • 逻辑文件分析与处理
  • 协议解码与可视化
  • 图表生成与分析
  • MCP(消息控制协议)服务器集成
  • 支持Logic 16及其他Logic 2设备
  • 使用Python-Saleae进行捕获文件的解析与分析

要求

  • Python 3.10或更高版本
  • 已安装Saleae Logic 2软件
  • Python-Saleae 模块
  • Logic 2 设备(Logic 16、Logic Pro 8 等)

安装

  1. 克隆仓库

  2. 使用 uv 创建并激活虚拟环境:

# Create virtual environment
uv venv

# Activate virtual environment
# On Windows:
.venv\Scripts\activate
# On Unix/MacOS:
source .venv/bin/activate
  1. 使用 uv 安装依赖项:
# Install all dependencies
uv pip install -e .

如果你在依赖项上遇到任何问题,可以尝试直接安装它们:

# Install logic2-automation from GitHub
uv pip install git+https://github.com/saleae/logic2-automation/#subdirectory=python

# Install other dependencies
uv pip install grpcio protobuf grpcio-tools saleae mcp[cli] pytest

注:由于依赖需求,此项目需要 Python 3.10 或更高版本。

使用方法

运行MCP服务器

启动用于远程控制的MCP服务器:

# Using uv (recommended)
uv --directory <project_path> run -m logic_analyzer_mcp

注:使用时 uv确保你已经安装了它,并且它在你的环境变量PATH中 --directory 参数应指向项目的根目录。

当前兼容性与测试版本

这个项目已经过测试,使用的是 Saleae Logic 1.2.40 Windows版.

  • 请使用此版本以确保最佳兼容性。
  • 其他版本可能也能正常工作,但本项目不对其提供保证或官方支持。

实验笔记(α)

这是一个实验性(alpha)版本。以下MCP工具序列已经过测试,对我有效:

  1. Saleae_connect(适用于Saleae Logic 1.2.40)
  2. Saleae配置
  3. saleae_capture — 将捕获数据保存为.logicdata格式
  4. 解析捕获文件(可选)
  5. 获取MCP数字数据
  6. saleae_export(可选。如需使用,请使用csv格式)

注:

  • 在使用这些工具之前,请确保Saleae Logic应用程序正在运行,并且脚本套接字服务器已启用。
  • 在调用 saleae_capture 时,请请求 .logicdata 格式,以确保与控制器方法的最佳兼容性。

故障排除与重要注意事项

  • 逻辑软件必须正在运行:

    • 在使用此自动化接口之前,请确保您的系统上已运行Saleae Logic软件。自动化脚本将尝试连接到正在运行的实例。
    • 如果软件未运行,脚本可能无法连接,或者可能会以模拟模式启动一个新的实例(该实例将无法检测到您的真实设备)。
  • 启用脚本套接字服务器:

    • 在Logic软件中,前往 Options > Preferences (或 Edit > Preferences),并确保勾选了“启用脚本套接字服务器”选项。
    • 默认端口通常是10429。如果您更改了此端口,请相应地更新您的脚本。
    • 如果脚本服务器未启用,Python API 将无法与 Logic 通信,您将看到连接错误。
  • 设备未检测到:

    • 在运行任何脚本之前,请确保您的Logic设备已连接到计算机,并且已被Logic软件识别。
    • 如果设备未被检测到,请检查您的USB连接,并尝试重新启动Logic软件。
  • 架构兼容性:

    • 确保Logic软件和您的Python环境均为32位或均为64位。架构不匹配可能导致连接失败。
  • 权限:

    • 在某些系统上,您可能需要以管理员权限运行Logic软件和/或您的Python脚本,以允许套接字通信。
  • 支持的版本:

    • 这个项目是为Saleae Logic 1.x/2.x自动化设计的。某些功能可能仅在安装了相应的自动化API的情况下,才可在Logic 2.x中使用。

关于捕获文件格式的说明

  • 逻辑数据格式 是推荐且支持度最高的捕获文件格式。所有自动化和解析功能均设计为与之可靠配合使用 .logicdata 文件。
  • .sal 文件 (一些较旧或替代性的Saleae软件所使用的)目前已知存在bug和兼容性问题。自动转换或处理 .sal 文件可能会失败或需要手动修复。为了获得最佳效果,请始终使用 .logicdata 捕获数据的格式。

API 参考文档

Saleae控制器

提供对Logic 2功能高级访问的主要控制器类。

设备配置方法:

  • create_device_config(name: str, digital_channels: List[int], digital_sample_rate: int, analog_channels: Optional[List[int]] = None, analog_sample_rate: Optional[int] = None, digital_threshold_volts: Optional[float] = None) -> str

    • 创建一个具有指定通道和采样率的新设备配置
    • 返回配置名称
  • get_device_config(name: str) -> Optional[LogicDeviceConfiguration]

    • 通过名称检索设备配置
    • 如果未找到,则返回 None
  • list_device_configs() -> List[str]

    • 列出所有可用的设备配置名称
  • remove_device_config(name: str) -> bool

    • 移除设备配置
    • 如果成功则返回 True,未找到则返回 False

捕获配置方法:

  • create_capture_config(name: str, duration_seconds: float, buffer_size_megabytes: Optional[int] = None) -> str

    • 创建一个新的捕获配置,指定持续时间
    • 返回配置名称
  • get_capture_config(name: str) -> Optional[CaptureConfiguration]

    • 通过名称检索捕获配置
    • 如果未找到,则返回 None
  • list_capture_configs() -> List[str]

    • 列出所有可用的捕获配置名称
  • remove_capture_config(name: str) -> bool

    • 移除捕获配置
    • 如果成功则返回 True,未找到则返回 False

配置:

Claude配置(包含uv运行):

{
    "mcpServers": {
        "logic-analyzer-ai-mcp": {
            "type": "stdio",
            "command": "uv",
            "args": [
                "--directory",
                "<path to folder>",
                "run",
                "-m",
                "logic_analyzer_mcp"
            ]
        }
    }
}

Claude配置(直接使用):

{
    "mcpServers": {
        "logic-analyzer-ai-mcp": {
            "type": "stdio",
            "command": "python",
            "args": [
                "<path to folder>\\src\\logic_analyzer_mcp.py"
            ]
        }
    }
}

克劳德配置(带uv运行):

{
    "mcpServers": {
        "logic-analyzer-ai-mcp": {
            "type": "stdio",
            "command": "uv",
            "args": [
                "--directory",
                "<path to folder>",
                "run",
                "-m",
                "logic_analyzer_mcp"
            ]
        }
    }
}

Logic2 参数说明

此项目包含一个用于Logic2自动化的可选实验路径。默认情况下,该功能处于禁用状态。您可以通过以下三种方式之一将其启用:

  • CLI 标志(推荐用于一次性运行)

    • 示例:
      • 使用 Python 运行 logic_analyzer_mcp 模块,并传入 --logic2 参数
  • 环境变量(便于CI/持久化Shell使用)

    • 示例(Unix):
      • LOGIC2=1 python -m logic_analyzer_mcp 翻译为中文是:“LOGIC2设置为1,运行python模块logic_analyzer_mcp”
    • 示例(Windows PowerShell):
      • 将环境变量 LOGIC2 设置为 '1';然后运行 logic_analyzer_mcp 模块
  • 程序化API(当嵌入库时)

    • 在注册工具之前调用辅助函数:
      • 从 mcp_tools 模块导入 set_logic2_enabled 和 setup_mcp_tools 函数
      • 设置逻辑2启用状态为真(True)
      • 设置MCP工具(mcp, 控制器)
    • 或者将显式参数传递给 setup_mcp_tools:
      • `setup_mcp_tools(mcp, controller, enable_logic2=True)` 翻译成中文是:“设置MCP工具(mcp,控制器,启用逻辑2为真)”

注释

  • 默认行为:Logic2 实验性功能处于关闭状态。当禁用时,代码将优先使用基于控制器的或离线回退方案。
  • 安全性:实验性功能可能会发生变化——请在生产环境中使用前,有意启用并在您的环境中进行测试。
  • 故障排除:如果启用 Logic2 失败,请检查是否已安装 logic2-automation 和 python-saleae 包,并确保 Saleae 应用程序正在运行且可访问。

克劳德配置(示例)

以下是一个最小化的Claude MCP服务器配置示例,您可以根据需要进行调整。请将此配置放置在您的Claude配置文件或工具设置中。

{
  "mcpServers": {
    "logic-analyzer-ai-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "<path to folder>",
        "run",
        "-m",
        "logic_analyzer_mcp",
        "--logic2"
      ]
    }
  }
}

注释:

  • 移除 --logic2 如果你不希望启用实验性的 Logic2 工具,请进行标记。
  • 调整 <path to folder> 和其他 uv 根据您的环境进行参数匹配。
  • 使用 python 如果您更倾向于直接调用模块而不是通过(某种方式或接口),则基于配置 uv。