句柄
- 一个代表仪器本身的
scopeNet - 每个输入各一个
scope-channelNet
lager.scope(name) 接受这两种中的任意一种。通道设置和测量需要通道 Net。其余一切都属于仪器本身,通过任意一种 Net 都可以使用。
方法
类型
Measurement
EdgeTrigger
TriggerSettings 和 Measurements
trigger() 返回一个 TriggerSettings,其中包含 mode、source、slope、level,以及示波器报告时的 holdoff。每个字段都是 Option,采用仪器自己的写法。
measure_all() 返回一个 Measurements,每个量各有一个 Option<f64> 字段。Measurements::get(Measurement) 读取其中一个。
ScopeCapture
capture() 和 ScopeStream::next_capture() 返回一次采集:
对于不在这次采集中的通道,
volts() 和 counts() 返回 None。
控制设置与结果
带类型的控制方法接受并返回以下类型。输入结构体DisplaySettings、FftOptions 和 CursorSettings 实现了 Default:设置所需字段,其余用 ..Default::default() 补齐。
方法参考
measure(m: Measurement) -> Result<Option<f64>>
从该通道读取一个量。
None。例如,直流电平没有周期。这是一个答案,而不是错误。
measure_all() -> Result<Measurements>
读取该次采集支持的每一个量。每次 measure() 调用都会进行自己的采集,因此对于实时信号,分开调用得到的值可能来自不同的时刻。measure_all() 从同一次采集中读取全部值,因此它们彼此一致。
trigger_edge(trigger: &EdgeTrigger) -> Result<()>
配置边沿触发。Box 只应用已设置的字段。因此只设置 level 时只会移动触发电平,触发源和斜率保持不变。
TriggerMode::Single 让示波器为一次采集做好准备,与台式示波器上的行为相同。没有设置任何字段的调用会被 Box 拒绝。
capture() -> Result<ScopeCapture>
获取示波器最新一次采集。如果还没有,它会立即采集一次,因此请先用 run() 或 single() 启动示波器。需要 scope-trace feature:
capture_timeout(timeout) 按您给定的时间等待。到时仍没有采集时,以 Error::Timeout 失败。
stream() -> Result<ScopeStream>
订阅从现在起的每一次采集。读取较慢的一方得到的是最新的采集而不是积压的数据,因此看到的只是较低的帧率。用 next_capture(timeout: Duration) 读取,用 close() 结束。把流 drop 掉同样会关闭它。
带类型的控制方法
count 是在 AcquisitionMode::Average 下参与平均的采集次数(设置之前为 16)。时间光标需要一次采集来读取其下方的波形;电压光标不需要。
command(action: &str, params: Value) -> Result<Value>
运行一个没有类型化方法的示波器操作,并返回它的 value。
示例
测量一个时钟
受支持的硬件
说明
- 在仪器 Net 上执行通道操作会失败。 把
set_scale()或measure()发给scopeNet 时,Box 会以Error::Box和 HTTP 400 应答。错误信息会列出应改用的通道 Net。 - 早于 0.55.0 的 Box 对示波器 Net 应答 HTTP 501,crate 将其返回为
Error::UnsupportedByBox。 - 每次调用允许 45 秒。Box 把单条示波器命令限制在 30 秒,因此 Box 自己的超时错误会在 crate 停止等待之前到达。
- 波形采集需要能够流式传输的示波器。
capture()和stream()使用 Box 的/scope页面背后的 WebSocket。它们适用于 PicoScope Net,以及已配对 HDMI 采集卡的 Rigol MSO5000 Net(Box 软件 0.57.0 或更高版本)。在没有采集卡的 Rigol 上,Box 会拒绝该请求,返回Error::Box。 capture()和stream()只在阻塞客户端上提供,并且需要普通的http://Box URL。- 逻辑分析仪 Net 没有 Rust 句柄,因为 Box 在
/net/command上没有logic角色。待办清单在 MISSING_ENDPOINTS.md 中。 - 来自
AsyncLagerBox::scope的AsyncScope提供同样的方法,以.await调用。

