Skip to main content
Scope 是一个有文档记录的占位实现。除 name() 之外的每个方法都返回 Error::NotSupportedByBox。这个类型之所以存在,是为了让今天照着它写的代码能够编译通过,并且在 Box 长出背后的端点之后继续编译通过。

句柄

Scope 是少数几个既没有生命周期参数、也没有异步版本的句柄之一:目前还没有需要它去做的客户端工作。

方法

错误会原样带上原因:

原因

这个 crate 是 Box 在 9000 端口上那套 API 的纯 HTTP/JSON 客户端。它驱动的每种 Net 类型,都需要在那里有一条路由。 对示波器来说,Box 现在已经有了这条路由。POST :9000/net/command 为 PicoScope 和 Rigol 提供 scope 角色。它覆盖通道启用、垂直和水平刻度、探头衰减、耦合、边沿触发配置、采集控制和测量。剩下的工作在 crate 这一侧。Scope 句柄还没有使用这些操作,因此上面的方法仍然返回 Error::NotSupportedByBox。 两侧都还不支持逻辑分析仪的工作:/net/command 没有 logic 角色。 流式采集保持现状。它是经由 WebSocket 中继传输的二进制帧流,而不是请求/响应式的 JSON,因此不适合放在这些方法后面。待办清单在 MISSING_ENDPOINTS.md 中。

替代做法

示波器和逻辑相关的工作请用 Python API 或 CLI,其余一切用 Rust。它们驱动的是同一台 Box 和同一批 Net。
如果断言真正需要的只是一个标量,一个 ADC Net 往往就够了,而且它今天就可用。确实需要真实波形时,请在测试的 shell 步骤里驱动 lager scope,或者把那一部分用 Python 写。

说明

  • 该占位实现返回的是 Error::NotSupportedByBox,这与 Error::UnsupportedByBox 是不同的变体。NotSupportedByBox 表示该 crate 对此根本没有路由;UnsupportedByBox 表示确实存在这条路由,只是这台 Box 太旧。请参阅 错误。
  • 逻辑分析仪 Net 在 Rust 中完全没有句柄 —— 没有 lager.logic(...)。
  • 这里的一切都与 Box 版本无关。即便 Box 运行的是最新软件,返回的仍然是这个占位错误。