【Bleak】七、使能通知

时间: 2023-10-04 admin IT培训

【Bleak】七、使能通知

【Bleak】七、使能通知

1. 前言

上一章节介绍了特征及描述的发现,有些特征是具备通知属性的,通知使能就像是打开一个开关,打开了就相当于允许服务端设备向客户端发送数据。现在我们来看看在Bleak上如何打开通知的开关。

本文是基于源码例子的 enable_notifications.py 来展开的。

2. 准备一个心率带设备

为了更好得介绍,我们用NORDIC模拟了个心率带设备,现在通过nRF Connect来看看它的服务及其下面的特征和描述。

可以看到特征Heart Rate Measurement 是具备NOTIFY属性的,等会我们去使能它看对方会发来什么数据。

3. 源码解析

import sys
import asyncio
import platformfrom bleak import BleakClientCHARACTERISTIC_UUID = "f000aa65-0451-4000-b000-000000000000"
ADDRESS = ("24:71:89:cc:09:05"if platform.system() != "Darwin"else "B9EA5233-37EF-4DD6-87A8-2A875E821C46"
)def notification_handler(sender, data):"""Simple notification handler which prints the data received."""print("{0}: {1}".format(sender, data))async def main(address, char_uuid):async with BleakClient(address) as client:print(f"Connected: {client.is_connected}")await client.start_notify(char_uuid, notification_handler)await asyncio.sleep(5.0)await client.stop_notify(char_uuid)if __name__ == "__main__":asyncio.run(main(sys.argv[1] if len(sys.argv) > 1 else ADDRESS,sys.argv[2] if len(sys.argv) > 2 else CHARACTERISTIC_UUID,))

从以上代码可以得知:
🔔 调用该脚本时可输入2个参数,第一个参数是设备地址,第二个参数是特征UUID,无填参数的话使用代码内默认的
🔔 连接成功后,使能指定特征的通知功能
🔔 在 notification_handler 里将服务端发过来的通知数据打印出来
🔔 5秒后关闭通知功能

4. 运行及结果

从上一章中,发现特征的结果中可知道 Heart Rate Measurement的UUID是:

00002a37-0000-1000-8000-00805f9b34fb

设备地址依然是 D7:18:EE:D9:E0:7A。

运行及结果:

结果中的15是 Heart Rate Measurement 的特征 Handle,冒号后面的是原始数据。

5. 写在最后

使能通知是控制是否接收服务端数据的开关,当需要该数据的时候使能它,不需要的时候disable掉。

通知功能是BLE通讯的最主要方式之一。

看完觉得有收获点个赞吧 ❤️ 或者关注Bleak专栏查看更多Bleak相关使用⏩