Skip to main content
用 Box 自带的蓝牙适配器找到正在广播的被测设备,连接它,并枚举它的 GATT 服务。

句柄

BLE 是 Box 级能力,不是一个 Net:它驱动的是 Box 自己的适配器。它没有 Net 名称,也没有 name()

方法

类型

方法参考

scan(timeout: f64) -> Result<Vec<BleDevice>>

扫描正在广播的设备 timeout 秒,该值必须介于 0.1 和 300 之间。有名称的设备排在前面。

scan_named(timeout: f64, name_contains: &str) -> Result<Vec<BleDevice>>

同样的扫描,但按不区分大小写的名称子串过滤。

info(address: &str) -> Result<BleDeviceInfo>

短暂连接并枚举该设备的 GATT 服务。

connect(address: &str) -> Result<BleDeviceInfo>disconnect(address: &str) -> Result<()>

按地址连接某个设备,或者确保与它断开连接。

示例

断言被测设备带着正确的服务在广播

说明

  • 每台 Box 只有一个适配器。 Box 会把它上面所有的 BLE BluFi 工作串行化,因此并发调用会排队而不是失败。一次 BluFi 配网和一次 BLE 扫描不能重叠。
  • capabilities.ble_commandtrue 只表示 Box 提供这条路由,而不表示它能完成这项工作。容器里没有运行 BlueZ 的 Box 会用 Error::Box 和 HTTP 502 作答,并携带 The name org.bluez was not provided by any .service files。即使 USB 总线上确实有蓝牙控制器也会这样。请检查错误,而不是只看能力标志。
  • infoconnectdisconnect 在 Box 侧的连接超时是 10 秒;客户端在此之上再加 30 秒。
  • rssi 是恰好收到的那条广播的一次快照。请把它当作排序提示,而不是测量值。