语法
lager scope 列出 Box 上的 scope 和 scope-channel Net。不带 NET_NAME 的命令使用默认的示波器 Net。用 lager defaults add --scope-net NET_NAME 设置默认值。
示波器及其通道
一台示波器对应两种 Net。scope Net 是仪器本身。scope-channel Net 是它的一路输入,每个通道一个 Net。对于双通道 PicoScope,lager nets tui 提供三个 Net:两个通道,以及它们所属的示波器。
这种划分与硬件一致。有六项设置属于通道,其余设置属于仪器:
两种 Net 的用法相同:
仪器命令也可以作用于它的某个通道 Net。一个通道只属于一台示波器,因此该命令没有歧义。早于 scope Net 的脚本无需修改即可继续工作。反过来则不行。
lager scope picoscope1 coupling ac 没有指明通道,Box 也不会去猜测。错误信息会列出应改用的通道 Net。早于 scope Net 的 Box 只有通道 Net,保存时的角色为
scope。Box 第一次读取 Net 时会转换它们。每个旧 Net 都变成同名、同引脚的 scope-channel Net。旁边会出现一个以型号命名的 scope Net,例如 picoscope1。没有引脚的旧 scope Net 仍然是 scope Net,代表整台仪器。您无需重新添加任何内容,也可以重命名新的 Net。全局选项
每条命令也都接受
--box。通道、采集控制、autoscale、measure 和 cursor 命令还接受 --mcu MCU,除 holdoff 以外的各种触发类型也接受。没有任何 lager scope 命令使用它的值。
命令
边沿触发在 PicoScope 和 Rigol 上都可用。脉冲触发和协议触发(I2C、SPI、UART)仅限 Rigol。
trigger holdoff 仅限 PicoScope。测量在两种仪器上都可用,但两者的计算方式不同。Rigol 回答关于它所显示波形的 SCPI 查询。对于 PicoScope,守护进程根据采集到的数据块计算该值,因为 PicoTech 的任何 API 都没有与
:MEAS:VPP? 等价的命令。因此 --display 和 --cursor 仅限 Rigol。它们把读数显示在仪器的屏幕上,而 PicoScope 没有屏幕。PicoScope 采集期间,测量和光标读数使用守护进程最近一次串流发出的采集。因此它们描述的是 Web UI 中的波形,而不是片刻之后的另一次采集。停止之后,它们描述最后一次采集,就像停止状态下台式示波器上的读数一样。校验范围
CLI 在把命令发送到示波器之前会先检查这些值:受支持的硬件
守护进程从所连接的 PicoScope 读取通道数、电压量程、带宽、存储深度和 ADC 分辨率。它不根据系列假定这些值。要查看守护进程检测到的内容,请在 Web UI 的控制台中输入
capabilities。
添加 Net 时,lager nets tui 从型号读取通道数。对双通道型号,它提供两个通道 Net;对四通道型号,提供四个。8 通道的 4824A 同样得到四个,即通道 A 到 D,因为 Lager 不为 D 之后的通道命名。无法识别的型号得到两个。
功能对比
基本控制命令
enable
启用 scope-channel Net 的通道。
disable
停用 scope-channel Net 的通道。
start
开始波形采集。不带 --single 时,示波器以已设置的触发模式连续采集。
--single- 准备一次采集,然后停止(单次模式)
--single 运行 start 时,处于 single 模式的 PicoScope 会切换为 auto。单次采集在一次采集后停止,因此无法连续运行。
stop
停止波形采集。
force
不等待触发条件,立即触发。当信号不满足触发条件时,使用它。
status
在一次回复中显示所有示波器设置:通道、时基、触发和采集。仅限 PicoScope。
autoscale
自动调整垂直刻度和水平时基(仅 Rigol)。该命令可能需要 10 到 15 秒。
autoscale,因为它的 SDK 没有自动设置功能。请自行设置 scale 和 timebase。
通道配置
coupling
设置通道的输入耦合方式。
MODE- 耦合方式:dc、ac或gnd
PicoScope 会拒绝
gnd,因为没有任何 PicoScope 系列具备接地开关。要阻断直流分量,请使用 ac,或者停用该通道。
probe
设置探头衰减比,以获得准确的电压测量。
RATIO- 探头衰减比:1、10、100或1000
scale
设置通道的垂直刻度(每格伏特数)。
VOLTS_PER_DIV- 垂直刻度,单位伏特每格(0.001 至 100.0)
timebase
设置示波器的水平时基(每格秒数)。
SECONDS_PER_DIV- 水平时基,单位秒每格(1e-9 至 50.0)
status 报告的是实际使用的时基,而不是您请求的时基。
measure 子命令
在任一种仪器上测量波形特性。Rigol 返回它自己计算的读数。对于 PicoScope,Box 采集一个数据块,由守护进程根据采样点计算该值。您不需要串流或 CSV 导出。 每次 PicoScope 测量都需要单独的一次采集,因此读取多个值需要多次采集。要从一次采集中读取全部测量值,请使用 Python API 中的measurement.all()。
所有 measure 命令的通用选项:
时间测量
measure period
测量波形周期。
measure freq
测量波形频率。
measure pulse-width-pos
测量正脉宽。
measure pulse-width-neg
测量负脉宽。
measure duty-cycle-pos
测量正占空比(信号为高电平的时间占比)。
measure duty-cycle-neg
测量负占空比(信号为低电平的时间占比)。
电压测量
measure vpp
测量峰峰值电压。
measure vmax
测量最大电压。
measure vmin
测量最小电压。
measure vavg
测量平均电压。
measure vrms
测量有效值(均方根)电压。
trigger 子命令
显示或设置触发。边沿触发在 PicoScope 和 Rigol 上都可用。协议触发(I2C、SPI、UART)和脉冲触发仅限 Rigol。trigger
不带子命令时,trigger 显示触发的模式、触发源、边沿和电平。在 PicoScope 上,如果设置了释抑,它也会显示释抑。
pulse、i2c、spi 和 uart 的选项:
这四条命令每次都会应用
--mode 和 --coupling。因此,不带这两个选项的调用会把它们设置为 normal 和 dc。trigger edge 没有默认值,它只更改您给出的设置。
--coupling 是触发比较器前面的滤波器,而不是通道的输入耦合。这两项设置共用一个词,但作用不同。触发滤波器让示波器能在有噪声或漂移的边沿上触发,而波形不会改变。lager scope <net> coupling 改变通道所通过的信号,波形会随之移动。只有 Rigol 具备触发滤波器。PicoScope 会拒绝该标志,也不会把它改用于输入耦合。--mode 设置运行中的示波器如何触发。在 auto 模式下,如果没有边沿越过电平,示波器会自行触发,因此波形始终在更新。在 normal 模式下,屏幕只在真实触发时更新,这能让重复波形保持稳定。在 PicoScope 上,--mode single 还会准备一次采集,与 lager scope <net> start --single 相同。单次采集无法连续运行。因此,不带 --single 的 start 会把 single 改为 auto。在其他模式下,start 保持您设置的模式。trigger edge
设置边沿触发。它在 PicoScope 和 Rigol 上都可用。
每个选项都是可选的,未给出的选项保持原值。在 PicoScope 上,请至少给出一个选项。一个都不给时,命令会打印错误并以 1 退出。
在 PicoScope 上,
--source 接受通道字母(A 到 D)、通道编号(1 到 4)或 scope-channel Net 的名称。在 Rigol 上,--source 接受 scope-channel Net 的名称。
示例:
trigger holdoff
每次触发之后,在 SECONDS 秒内忽略触发,取值范围为 0 到 10。不给值时,该命令显示释抑时间。仅限 PicoScope。
trigger pulse
设置脉宽触发(仅 Rigol)。当脉宽满足条件时,示波器触发。
在 Rigol MSO5000 上,这个触发还不能工作。请参阅本页顶部的限制说明。
trigger-on 条件:
该条件目前还不选择极性:每个
positive 值与对应的 negative 值设置的是同一个宽度条件。缺少所需的宽度时,命令不会更改任何宽度条件,并打印一条提示。
trigger i2c
设置 I2C 协议触发(仅 Rigol)。示波器在 I2C 总线事件上触发。
在 Rigol MSO5000 上,这条命令还不能工作。请参阅本页顶部的限制说明。
--mode 和 --coupling 之外):
trigger-on 条件:
trigger spi
设置 SPI 协议触发(仅 Rigol)。示波器在 SPI 总线事件上触发。
--mode 和 --coupling 之外):
示例:
trigger uart
设置 UART 协议触发(仅 Rigol)。示波器在 UART 串行事件上触发。
在 Rigol MSO5000 上,这条命令还不能工作。请参阅本页顶部的限制说明。
采集与显示
这些命令仅限 PicoScope。Rigol 在前面板上完成同样的工作,Box 会对 Rigol Net 拒绝这些命令。acquire
设置连续多次采集的组合方式。不给模式时,该命令显示当前模式。
--count 需要配合模式使用。只给 --count 而不给模式时,命令会打印错误。
roll
设置滚动模式,它让慢速时基连续串流。不给模式时,该命令显示当前模式。
fft
报告某个通道最强的频率分量。Box 根据屏幕上的采集计算频谱。幅度为探头尖端处的 RMS 电压,单位为 dBV。
在
scope Net 上请给出 --channel,因为仪器本身没有通道。一般用途请使用 hann;当某个单音的幅度很重要时,请使用 flattop。对于恰好填满采集窗口的信号,请使用 rectangular。
display
设置 Web UI 绘制波形的方式。不带子命令时,display 显示当前设置。这些设置保存在 Box 上,因此打开的页面会跟随来自 CLI 的更改。
cursor 子命令
两组不同的命令共用这个名称。cursor time、cursor volts 和 cursor off 在 PicoScope 的采集采样点上放置光标。您需要输入这些命令,因为它们没有旋钮,绘图上也没有拖动手柄。这对光标保存在 Box 上,因此您从终端放置的光标会由 Web UI 画出来。Web UI 的控制台接受同样的 cursor 命令。
cursor set-a、set-b、move-a、move-b 和 hide 通过 SCPI,以屏幕坐标移动 Rigol 前面板显示屏上的标记。PicoScope 没有供它们使用的显示屏。
cursor
不带子命令时,cursor 读取已设置的光标。仅限 PicoScope。
cursor time
放置两个时间光标,单位为相对触发点的秒数。负的时间位于触发之前,采集的一半就在那里。
cursor volts
放置两个电压光标,单位为探头尖端处的伏特。
cursor off
清除两对光标,并让 Web UI 停止绘制它们。
两对光标相互独立。放置时间光标时,电压光标保持原位。每一对光标都要成对放置,因为单个光标读不出任何东西。您需要的量是两个光标之间的差值。位于采集窗口之外的光标不报告电压。最近的采样点来自另一个时刻,因此 Box 不使用它。回复会指明该窗口,因此原因一目了然。
cursor set-a / cursor set-b
仅限 Rigol。
设置光标 A 或 B 的绝对位置。
cursor move-a / cursor move-b
仅限 Rigol。按相对于当前位置的偏移量移动显示光标。
cursor hide
仅限 Rigol。隐藏仪器的显示光标。
stream 子命令(PicoScope)
从 PicoScope 实时串流示波器数据。Lager Box 上的一个守护进程拥有该 PicoScope,Box 上的一个网页显示波形。守护进程架构
所有访问都经由端口 9000 上的 Box HTTP 服务器到达示波器,其他所有 Net 也使用这个端口。拥有 PicoScope 的守护进程只监听环回地址。您无法从 Box 外部访问它:
采集帧以 LSCP/1(一种紧凑的二进制格式)穿过中继。一帧包含 64 字节的帧头、每个通道 16 字节的描述符,然后是连续的
int16 ADC 计数。中继不解码就转发帧,因此它的开销不会随采集大小增长。
早期版本把守护进程直接发布在端口 8081-8085 上。它们通过 WebTransport 向浏览器串流,这需要在容器中运行 QUIC 监听器并配置证书。这种设计已经移除。现在只有一个监听器,位于环回地址,也只有一个入口。
stream start
在 PicoScope 上启动串流采集,并打印 Web UI 的链接。
该命令按顺序应用各项设置,然后启动采集。如果守护进程拒绝某项设置,命令会打印错误并以 1 退出,采集也不会启动。触发源就是被串流的通道。
启动之后,命令打印指向
http://<box>:9000/scope 的链接。使用 --json 时,该链接位于 visualization_url 字段中。在位于访问网关之后的 Box 上,该链接带有您的登录令牌,与摄像头串流相同。
对于不是 PicoScope 的示波器,命令会打印错误,并建议使用 lager scope NET_NAME start --single。
示例:
stream stop
停止串流采集。如果守护进程拒绝,命令会打印错误并以 1 退出。
stream status
检查示波器守护进程是否在运行。该命令显示命令端口、通道数以及是否有采集已就绪。它不需要 Net 名称。
stream web
在浏览器中打开示波器 Web UI。
--port- Box HTTP 服务器端口(默认 9000)
http://<box>:<port>/scope。在位于访问网关之后的 Box 上,该链接带有您的登录令牌,与摄像头串流相同。令牌过期后,再次运行 stream web 即可获得新的链接。
Web 界面是一个无依赖的 HTML5 示波器显示,由 Box 在 http://<box>:9000/scope 提供。波形以 LSCP 二进制帧的形式经 WebSocket 到达,由浏览器解码。页面根据所连接设备的能力信息构建控件,因此双通道示波器不会显示通道 C。页面还有一个命令控制台。它接受此 CLI 的大多数命令,另外还接受 offset、hpos、vpos、sidebar 和 capabilities。在控制台中,作用于单个通道的命令可以指定通道:scale B 0.5、coupling B ac、probe B 10、offset B 0.1、vpos B -0.5 和 measure B vpp。请把通道写在最前面。请用字母表示通道,因为 scale 2 设置的是 2 V/div。不指定通道时,命令使用第一个已打开的通道,与测量面板相同。控制台中的回复会写明通道。
收起控制侧栏,把全部宽度留给波形和控制台。使用页眉中的 Hide sidebar 按钮,或输入 sidebar off。sidebar on 和 Show sidebar 把它显示回来。不带参数的 sidebar 说明当前是显示还是隐藏。页面为下次访问保留这个选择。
关闭一个通道会去掉它的波形,包括已经显示在屏幕上的那一条。disable B 可以做到,通道的开关同样可以。
拔掉正在串流的示波器会停止实时会话。页面显示当前没有串流。再插上示波器会重新打开设备。随后 Start 在新的会话上运行。
页面有两个位置控件,它们的工作方式不同:
- 单位。 在控制台中,可以输入以秒或伏特为单位的数值,也可以加上单位:
hpos 100ms、hpos 0.1和hpos 1e-3都正确。在侧边栏中,每个字段旁边的选择器改变字段所显示数值的单位,不改变位置本身。 - 范围。 范围以格为单位,所以改变刻度时范围也会改变。如果位置超出范围,页面会把它移到范围边缘,并在控制台中写一条提示。改变伏特/格时,垂直位置保持相同的电压,除非它超出范围。
- 应用数值。 在水平字段中输入的数值,在按 Enter 或离开字段时才生效,因为每次改变都会开始一次新的采集。按 Escape 恢复上一次的数值。在垂直字段中输入的数值立即生效。
- 方向键和按钮。 每个字段的右边缘有一个向上按钮和一个向下按钮。在两个字段中,按钮和上下方向键的每一步都立即生效。它们改变字段所显示的最后一位数字:
1.14变为1.13,1.1变为1.2。字段保持相同的小数位数,所以1.19变为1.20。如果字段只显示0,步长为十分之一格。按住按钮可以连续步进。 offset不是vpos。offset在示波器硬件中、在 ADC 之前移动信号。测量结果会改变;对于不以 0 V 为中心的信号,可以使用更小的伏特/格以获得更高的分辨率。vpos只在屏幕上移动波形。旧款 PicoScope 2000 型号(例如 2204A)没有模拟偏移。在这些型号上,控制台会拒绝非零的offset,并提示使用vpos。status还会显示每个通道的垂直位置。position是hpos的旧名称,将在以后的版本中删除。
stream capture
把串流中的 PicoScope 在 --duration 期间完成的采集记录到 CSV 文件。请先运行 stream start。
该命令把 CSV 文件写在 Box 上,而不是您的计算机上。相对路径以 Box 上的
/tmp 为基准。采集结束后,命令会打印一条 scp 命令,用于把文件复制到您的计算机。
该命令要么采集到数据,要么失败。如果示波器已停止,或者在 --duration 内没有采集到达,它会打印原因并以 1 退出。在 normal 和 single 模式下,示波器会等待触发,因此请检查触发电平和触发源。
CSV 的列为 capture、channel、sample_index、time_ns 和 voltage。
示例:
stream config
更改串流设置,而不启动或停止采集。
请至少给出一项设置。
--volts-per-div、--coupling、--enable 和 --disable 作用于 --channel 指定的通道。不带 --channel 时,它们作用于该 Net 的通道,否则作用于通道 A。命令会打印它应用的每一项设置。遇到守护进程拒绝的第一项设置时,它会停止并以 1 退出。
示例:
示例
Rigol 基本流程
通道配置
测量
触发
光标测量
PicoScope 串流
命令结构
说明
- Net 名称就是您用
lager nets搭建实验台时分配的名称 - 仪器命令可以作用于
scopeNet,也可以作用于它的某个scope-channelNet。通道命令需要scope-channelNet - 串流命令仅适用于 PicoScope 设备
- 测量在两种仪器上都可用。
--display和--cursor仅限 Rigol,因为它们在仪器的屏幕上绘制 cursor time、cursor volts和cursor off仅限 PicoScope。显示光标命令仅限 Rigolstatus、acquire、roll、fft、display和trigger holdoff仅限 PicoScope- 边沿触发是 PicoScope 和 Rigol 都支持的唯一触发类型
- 在 Rigol MSO5000 上,只有边沿触发和 SPI 触发可以工作(见 issue #418)
- Web UI 需要能访问 Lager Box 上的端口 9000
- CLI 会在把值发送到硬件之前拒绝超出允许范围的值
- 运行
lager scope --box BOX列出scope和scope-channelNet
参见
- 逻辑分析仪 — 数字信号采集与协议解码
- Python Scope API — 在 Python 脚本中自动进行示波器操作

