Skip to main content
与低功耗蓝牙(BLE)设备通信,进行扫描、连接、读写特征,以及订阅通知。

导入

函数

Central 类

Central 类提供 BLE 扫描和连接发起功能。

Central(loop=None)

创建一个 BLE 中心设备实例。
参数:

scan(scan_time=5.0, name=None, address=None)

扫描附近的 BLE 设备。
参数: 返回: list - 发现的 BLE 设备列表

connect(address)

按地址连接一台 BLE 设备。
参数: 返回: Client - 已连接的 BLE 客户端

pair(address)

与一台 BLE 设备配对。

Client 类

Client 类对已连接的 BLE 设备提供 GATT 操作。

创建 Client

connect()

建立与该 BLE 设备的连接。

disconnect()

断开与该 BLE 设备的连接。

pair()

与已连接的设备配对。

get_services()

发现并获取全部 GATT 服务。
返回: BleakGATTServiceCollection - 已发现服务的集合

has_characteristic(uuid)

检查设备上是否存在某个特征。
参数: 返回: bool - 该特征存在时为 True

read_gatt_char(char_specifier)

读取一个特征的值。
参数: 返回: bytearray - 该特征的值

write_gatt_char(char_specifier, data)

向一个特征写入值。
参数:

start_notify(char_specifier, callback=noop_handler, max_messages=None, timeout=None)

订阅某个特征的通知。
参数: 返回: tuple[bool, list] - (timed_out, messages),其中 timed_out 在超时时为 True

stop_notify(char_specifier)

取消订阅某个特征的通知。

sleep(timeout)

休眠一段时间(异步安全)。

辅助函数

noop_handler(handle, data)

一个空操作的通知处理函数。

notify_handler(evt, messages, callback, max_messages, handle, data)

内部通知处理函数,负责收集消息并发出完成信号。

waiter(event, timeout)

用于通知事件的异步等待辅助函数。

示例

扫描设备

连接并读取特征

订阅通知

写入命令并读取响应

检查设备固件版本

BLE 产线测试

硬件要求

依赖

BLE 模块底层使用 Bleak 作为 BLE 库,它提供跨平台的 BLE 支持。

说明

  • BLE 操作是对 Bleak 异步操作的同步封装
  • Client 类支持上下文管理器(with 语句),可自动清理
  • 通知回调函数接收 (handle, data) 参数
  • 请把 max_messagestimeout 配合使用,以控制通知的收集
  • MAC 地址的常见格式为 AA:BB:CC:DD:EE:FF
  • 有些 BLE 操作必须先完成配对才能工作
  • 扫描得到的设备对象上可以读取信号强度(RSSI)