# PySiglent **Repository Path**: osr-tech/pysiglent ## Basic Information - **Project Name**: PySiglent - **Description**: 轻量级Siglent(鼎阳)示波器Python驱动库,原生Socket实现SCPI控制,简洁而强大的 API支持通道配置、触发设置、数据采集等完整功能。 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-28 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pysiglent 轻量级鼎阳示波器 Python 驱动,通过原生 Socket 通信实现 SCPI 协议控制,支持 SDS 系列的多款示波器控制,适配Windows、Linux 和 macOS 平台。 ## 支持的示波器型号 | 型号 | 支持的版本号 | |------|-------------| | SDS5000X | 0.9.0 及更高版本 | | SDS2000X Plus | 1.3.5R3 及更高版本 | | SDS6000 Pro/SDS6000A | 1.1.7.0 及更高版本 | | SHS800X/SHS1000X | 1.1.9 及更高版本 | | SDS2000X HD | 1.2.0.2 及更高版本 | | SDS6000L | 1.0.1.0 及更高版本 | | SDS1000X HD | 1.1.0.2 及更高版本 | | SDS7000A | 1.0.7.0 及更高版本 | | SDS800X HD | 1.1.3.1 及更高版本 | | SDS3000X HD | 1.0.3.0 及更高版本 | ## 特性 - **轻量级**:仅依赖 `numpy`,无需安装 NI-VISA 运行时 - **类型安全**:使用枚举类型定义所有配置参数 - **双采集模式**:支持单次采集和序列采集 - **高性能传输**:分块读取机制,支持大数据量波形传输 - **完善日志**:内置 logging 支持,便于调试 ## 安装 ```bash pip install -e . ``` ## 快速开始 ```python from pysiglent import SiglentScope, CHANNEL, COUPLING, IMPEDANCE, SAMPLE_RATE, HOR_SCALE, TRIGGER_DIR # 连接示波器 scope = SiglentScope("192.168.1.100") # 配置通道 (100mV/div, DC耦合, 1MΩ阻抗) scope.set_channel(CHANNEL.C1, COUPLING.DC, IMPEDANCE.ONEM, vscale=100) # 配置触发 (500mV 上升沿触发) scope.set_trigger(CHANNEL.C1, threshold=500, direction=TRIGGER_DIR.RISING) # 配置采集 (1.25 GSa/s 采样率, 1μs/div 时基) scope.set_acquire(SAMPLE_RATE.SR_1_25G, HOR_SCALE.HOR_1US) # 布防并采集 scope.arm() data = scope.acquire_samples([CHANNEL.C1]) # 关闭连接 scope.close() ``` ## 参数配置 ### 通道 (CHANNEL) - `C1`, `C2`, `C3`, `C4`: 模拟通道 - `EX`: 外部触发 - `EX5`: 外部触发/5 - `LINE`: 电源线触发 ### 耦合 (COUPLING) - `DC`: 直流耦合 - `AC`: 交流耦合 ### 阻抗 (IMPEDANCE) - `ONEM`: 1MΩ - `FIFT`: 50Ω ### 带宽 (BANDWIDTH) - `FULL`: 全带宽 - `BW_20M`: 20MHz 带宽限制 - `BW_200M`: 200MHz 带宽限制 ### 触发方向 (TRIGGER_DIR) - `RISING`: 上升沿触发 - `FALLING`: 下降沿触发 - `ALTERNATE`: 任意沿触发 ### 采样率 (SAMPLE_RATE) 从 50 Hz 到 5 GHz,共 23 个档位,例如: - `SR_1_25G`: 1.25 GSa/s - `SR_500M`: 500 MSa/s - `SR_25M`: 25 MSa/s ### 水平时基 (HOR_SCALE) 从 200 ps/div 到 1000 s/div(具体范围因机型而异),例如: - `HOR_200PS`: 200 ps/div - `HOR_1NS`: 1 ns/div - `HOR_1US`: 1 μs/div - `HOR_1MS`: 1 ms/div - `HOR_1S`: 1 s/div ### 数据精度 (PRECISION) - `INT8`: 8-bit 数据 - `INT16`: 16-bit 数据 ## 序列采集模式 用于批量采集多个触发事件: ```python # 配置采集 1000 个序列 scope.set_acquire(SAMPLE_RATE.SR_1_25G, HOR_SCALE.HOR_1US, sequence=1000) scope.arm() # 返回 shape 为 [1000, N] 的二维数组 traces = scope.acquire_samples([CHANNEL.C1]) ``` ## 版权与许可声明 本项目仅供学习和科研使用。如需将本项目代码用于商业产品,请联系我们获取商业许可证。