句柄
方法
类型
Level
Level::as_str() 给出 "high" 或 "low";Level::is_high() 给出一个 bool。
WaitForLevelOptions
None,表示”使用 Box 的默认值”。未设置的字段会被整个从请求中省略,而不是作为 null 发送。
方法参考
input() -> Result<Level>
读取该引脚当前的电平。
Level::High 或 Level::Low。
output(level: Level) -> Result<()>
把输出驱动到 level。
output_high() -> Result<()> 和 output_low() -> Result<()>
output() 的便捷封装。
toggle() -> Result<Level>
翻转输出。
返回: 翻转之后引脚所处的电平,而不是之前的。
wait_for_level(level: Level, timeout_s: f64) -> Result<f64>
阻塞直到输入达到 level,或者 timeout_s 到时。
返回:
f64 —— 达到该电平之前经过的秒数。已经处于目标电平的引脚几乎立即返回(毫秒量级)。
等待发生在 Box 上,因此时序不会被网络延迟扭曲。在 LabJack T7 上,Box 会对该引脚做流式采样,因此不会漏掉短脉冲。其他仪器(包括 LabJack U3)在 Box 上轮询该引脚,短于轮询间隔的脉冲可能被漏掉。客户端会把自己的 HTTP 预算放宽到 timeout_s + 20s,好让决定何时放弃的是设备而不是传输层。
等待超时返回的是
Error::Box,而不是 Error::Timeout —— Box 完成了请求,并报告了始终没有达到该电平。信息内容是 GPIO 'gpio24' did not reach level 1 within 2.0s。Error::Timeout 表示 HTTP 请求本身过期了,那是另一个问题。wait_for_level_with(level: Level, opts: &WaitForLevelOptions) -> Result<f64>
完全控制这次等待,包括一直等下去。
示例
模拟一次按键,检查被测设备是否有反应
测量启动时间
受支持的硬件
说明
- 一个 Net 对应一个引脚。驱动
gpio1与gpio2毫无关系。 - 一个引脚是输入还是输出,取决于您最后一次对它做了什么。在一个您正在驱动的引脚上调用
input(),读回的是您自己的输出。 - GPIO Net 是 Box 侧的引脚:它们向被测设备驱动信号,或者从被测设备读取信号。它们不是被测设备的引脚。
- 在 FTDI 芯片上,gpio 走的是异步 bitbang,四个通道都能用。相比之下,MPSSE 协议(debug、spi、i2c)只限于通道 A 和 B。
- 实验台上的引脚有时控制的是仪器供电,而不是被测设备的信号。驱动一个引脚之前,请先看清它的 Net 名称。

