Bleak库使用指南:BLE设备连接与数据交互

Bleak库使用指南:BLE设备连接与数据交互

bleak A cross platform Bluetooth Low Energy Client for Python using asyncio bleak 项目地址: https://gitcode.com/gh_mirrors/bl/bleak

前言

Bleak是一个基于Python的异步BLE(蓝牙低功耗)客户端库,它提供了简洁的API来与蓝牙设备进行交互。本文将详细介绍如何使用Bleak库连接BLE设备并进行数据读写操作。

基本概念

在开始使用前,需要了解几个关键概念:

  1. BLE设备地址:每个BLE设备都有一个唯一的MAC地址,格式通常为"XX:XX:XX:XX:XX:XX"
  2. GATT特性(UUID):BLE设备通过GATT协议提供服务,每个服务包含多个特性,每个特性都有唯一的UUID标识
  3. 特性操作:可以读取(read)、写入(write)特性值,或订阅(notify)特性值变化

连接BLE设备

Bleak提供了两种连接设备的方式:

方式一:使用异步上下文管理器(推荐)

import asyncio
from bleak import BleakClient

address = "24:71:89:cc:09:05"
MODEL_NBR_UUID = "2A24"

async def main(address):
    async with BleakClient(address) as client:
        model_number = await client.read_gatt_char(MODEL_NBR_UUID)
        print("Model Number: {0}".format("".join(map(chr, model_number))))

asyncio.run(main(address))

这种方式会自动管理连接的生命周期,在退出上下文时自动断开连接。

方式二:手动管理连接

import asyncio
from bleak import BleakClient

address = "24:71:89:cc:09:05"
MODEL_NBR_UUID = "2A24"

async def main(address):
    client = BleakClient(address)
    try:
        await client.connect()
        model_number = await client.read_gatt_char(MODEL_NBR_UUID)
        print("Model Number: {0}".format("".join(map(chr, model_number))))
    except Exception as e:
        print(e)
    finally:
        await client.disconnect()

asyncio.run(main(address))

这种方式需要手动调用connect()和disconnect()方法,适合需要更精细控制连接流程的场景。

特性操作注意事项

在Bleak 0.7.0及以上版本中,需要注意以下事项:

  1. 一个BLE外设可能有多个具有相同UUID的特性
  2. 现在可以通过以下方式指定特性:
    • 特性UUID(字符串形式)
    • 特性句柄(handle)
    • BleakGATTCharacteristic对象本身

这些方式适用于以下方法:

  • read_gatt_char
  • write_gatt_char
  • start_notify
  • stop_notify

最佳实践

  1. 脚本命名:不要将脚本命名为bleak.py,这会导致循环导入错误
  2. 连接管理:确保在使用完客户端后总是调用disconnect方法,操作系统蓝牙栈可能需要清除缓存在BleakClient中的残留数据
  3. 错误处理:使用try-except块捕获可能的异常,确保资源被正确释放
  4. 长连接:如果需要保持长时间连接,需要实现心跳机制或重连逻辑

进阶使用

除了基本的读取特性值外,Bleak还支持:

  • 写入特性值
  • 订阅特性通知
  • 发现服务和特性
  • 读取RSSI值
  • 设备配对等高级功能

建议参考官方示例代码学习这些高级用法。

总结

Bleak库提供了简洁而强大的API来与BLE设备交互。通过本文介绍的基本用法,开发者可以快速上手实现BLE设备的连接和数据读写。在实际开发中,应根据具体需求选择合适的连接管理方式,并注意资源释放和错误处理,以确保应用的稳定性和可靠性。

bleak A cross platform Bluetooth Low Energy Client for Python using asyncio bleak 项目地址: https://gitcode.com/gh_mirrors/bl/bleak

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郦琳凤Joyce

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

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

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

打赏作者

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

抵扣说明:

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

余额充值