【Bleak】七、使能通知

1. 前言

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

本文是基于源码例子的 enable_notifications.py 来展开的。
在这里插入图片描述

2. 准备一个心率带设备

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

可以看到特征Heart Rate Measurement 是具备NOTIFY属性的,等会我们去使能它看对方会发来什么数据。
在这里插入图片描述

3. 源码解析

import sys
import asyncio
import platform

from bleak import BleakClient

CHARACTERISTIC_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相关使用⏩

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强人电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值