# pico6000 **Repository Path**: osr-tech/pico6000 ## Basic Information - **Project Name**: pico6000 - **Description**: PicoScope 6000系列示波器Python驱动包,专为侧信道数据采集设计。 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-10 - **Last Updated**: 2026-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pico6000 `pico6000` 是用于控制 PicoSDK `ps6000a` 驱动支持的 PicoScope 6000A 系列示波器的 Python 包,API 风格尽量与 `pico3000` 保持一致,便于在不同 PicoScope 项目之间迁移采集脚本。 当前项目驱动主要配置 A-D 模拟通道,支持触发块采集、分段采集、量程/耦合/带宽设置、分辨率选择,以及命令行采集后输出 PNG、NPZ 或 CSV。 ## 安装 ```sh pip install . ``` 开发调试时可使用: ```sh pip install -e . ``` 安装后会提供 `pico6000` 命令行工具: ```sh pico6000 --help ``` ## CLI 常用命令: - `pico6000 list`:列出已连接的 Pico6000 设备序列号。 - `pico6000 info`:查看 CLI 支持的通道、量程、耦合、带宽、分辨率和 timebase 采样率换算。 - `pico6000 sample-rate `:把 Pico timebase 转换为实际采样率。 - `pico6000 timebase `:把期望采样率转换为最接近的 Pico timebase,并显示实际采样率。 - `pico6000 plan`:根据预期电压、采集窗口、信号频率等目标建议量程、采样率、样本数和带宽。 - `pico6000 capture`:执行一次触发块采集,默认输出 PNG 波形图,也可输出 NPZ/CSV 原始数据。 查看设备: ```sh pico6000 list ``` 查看支持的设置: ```sh pico6000 info --json ``` 规划一次测量,例如 1.2 V 最大幅值、1 ms 采集窗口: ```sh pico6000 plan --max-abs-mv 1200 --duration-ms 1 --samples 100000 --json ``` 两通道采集并保存 PNG: ```sh pico6000 capture --channel A --channel B --a-range 2V --b-range 2V --sample-rate-mhz 500 --samples 100000 --trigger-source A --trigger-threshold-mv 500 --output capture.png ``` 采集 PNG,同时保存原始波形数据: ```sh pico6000 capture --channel A --a-range 2V --sample-rate-mhz 500 --samples 100000 --output capture.png --data-output capture.npz ``` 在没有真实硬件或需要先确认配置时,使用 `--dry-run`。该模式只打印解析后的配置,不会打开设备: ```sh pico6000 capture --channel A --a-range 2V --sample-rate-mhz 500 --samples 100000 --trigger-source A --trigger-threshold-mv 500 --dry-run ``` `capture` 常用参数: - `--serial`:指定设备序列号;不指定时打开第一个设备。 - `--resolution`:设备分辨率,支持 `8bit`、`10bit`、`12bit`、`14bit`、`15bit`、`16bit`。 - `--channel`:采集通道,可重复指定 A-D;默认 A。 - `--a-range`、`--b-range`、`--c-range`、`--d-range`:垂直量程,支持 `10mV` 到 `50V`。 - `--a-coupling` 等:通道耦合,支持 `AC`、`DC`、`DC50`。 - `--a-bandwidth` 等:带宽限制,支持 `full`、`20MHz`、`200MHz`。 - `--trigger-source`:触发源,支持 `A`、`B`、`C`、`D`、`EXT`。 - `--trigger-threshold-mv`:触发电平,单位 mV。 - `--trigger-direction`:触发方向,支持 `rising`、`falling`、`both`。 - `--samples`:总采样点数;也可用 `--pre-trigger`、`--post-trigger` 指定触发前后点数。 - `--timebase` 或 `--sample-rate-mhz`:二选一设置采样率。 - `--sequence`:分段采集次数。 - `--format`:主输出格式,支持 `auto`、`png`、`npz`、`csv`。 - `--data-output`:额外保存原始波形数据。 PNG 是推荐的人机检查输出。采集后应检查是否削顶、触发点是否在预期位置、预触发窗口是否足够、采样密度是否足够,以及是否需要调整带宽限制。 ## Python API ```python from pico6000 import ( Pico6000A, CHANNEL, COUPLING, VRANGE, TRIGGER_DIR, BANDWIDTH, RESOLUTION, ) scope = Pico6000A(resolution=RESOLUTION.DR_8BIT) scope.set_channel( channel=CHANNEL.CHANNELA, coupling=COUPLING.DC, vrange=VRANGE.PICO_2V, bandwidth=BANDWIDTH.BW_FULL, enable=True, acquire=True, ) scope.set_trigger( source=CHANNEL.CHANNELA, threshold=500, direction=TRIGGER_DIR.PICO_RISING, ) scope.set_acquire( pre_trigger=10000, post_trigger=90000, timebase=3, sequence=1, ) scope.arm() # 如果触发动作由程序完成,例如串口发送明文,建议 arm 后等待约 0.3 s 再触发。 # time.sleep(0.3) # perform_trigger_action() data = scope.acquire(CHANNEL.CHANNELA) scope.close() ``` ## AI Agent Skill 项目内置 `skills/pico6000-oscilloscope` skill,可用于指导 Codex/agent 选择安全量程、规划采样率、执行 CLI 或 Python API 采集,并根据输出 PNG 判断采集质量。 ## 许可 MIT License