ScopeMCP--DS1102示波器MCP服务器
一个Python MCP服务器,用于连接 Owon/Abstop DS1102(固件V3.1.0) 示波器(固件V3.1.0)通过 模型上下文协议.
可用工具
状态和元数据
get_connection_status:检查连接、型号、运行状态和时间戳。get_live_metadata:返回完整的设备元数据(时基、采样率、通道/触发器配置)。get_measurements:为两个通道提供频率、周期、比例、探测因子和耦合。
波形捕获
capture_waveform(channel, max_samples):捕获单个通道(固定为1520个硬件样本,软件降采样)。capture_dual_waveform(max_samples):在一次操作中高效捕获两个通道。
电压转换公式:
voltage = (raw - OFFSET) / 250.0 * scale_v * probe_factor注: DS1102始终通过USB传输1520个样本。下采样发生在软件中。
垂直和水平控制
set_vertical_scale(channel, scale):例如,“1V”、“500mV”。set_channel_coupling(channel, coupling):AC、DC或GND。set_voltage_offset(channel, offset):垂直位置,单位为伏特。set_horizontal_scale(scale)例如,“1ms”、“500us”。
触发器和设备控制
set_trigger_mode(mode):自动、普通、单身。set_trigger_source(source):CH1,CH2。set_trigger_slope(slope):上升,下降。set_trigger_level(level_mv):阈值单位为毫伏(例如,0.5V为500.0)。set_run_state(state):运行或停止。run_autoset():执行自动示波器设置。
需求
- Python 3.10+
- libusb后端(在Windows上:通过安装 扎迪格)
- DS1102通过USB连接
pip install mcp libusb-package pyusb设置
详细的安装说明可以在 doc/INSTALL.md.
添加 claude_desktop_config.json:
{
"mcpServers": {
"ds1102-scope": {
"command": "python",
"args": ["C:/path/to/ds1102_mcp.py"]
}
}
}实时监视器(抓取器)
除了MCP服务器,该存储库还包括 ds1102_grabber.py这是一个轻量级的实时示波器前端(GUI),允许直接在您的PC上实时查看两个通道。
特性
- 双通道实时取景:CH1和CH2同时显示。
- 实时同步:在设备上更改时,自动调整缩放比例(V/div)和探头系数(1X/10X)。
- 清洁网格模式:抓取器中的网格与硬件示波器上的刻度完美匹配(没有令人困惑的数字标签)。
- 键盘快捷键:直接通过键盘进行基本控制(例如。,
SPACE用于运行/停止)。
运行抓取器
确保示波器通过USB和依赖关系连接(matplotlib, numpy, pyusb)已安装。
python ds1102_grabber.py______________________________________________________________________
已知限制
- 捕获速度(~7-10s): DS1102始终通过USB传输完整的1520采样缓冲区。这
:DATA:WAVE:POINTSSCPI命令对此固件的传输大小没有影响。这是一个已确认的硬件限制——请参阅FINDINGS_USB_Transfer_Limit.md. run_status从不显示STOP: 固件始终报告TRIG在状态字段中,即使已停止。这是固件行为,而不是服务器错误。- CH2在以下情况下返回零
DISPLAY: OFF: 示波器上禁用的通道没有信号数据可用。
协议说明(固件V3.1.0)
- 每个SCPI命令都以前缀 4字节小字节长度标头.
- 命令必须以结尾
\n(0x0A)。 - 屏幕数据:1520个样本×2个字节的带符号16位小字节序=3040个字节+4个字节的报头。
- 完整协议详细信息:请参阅 doc/ds1102_协议.md.
许可证
GNU GPLv3
