美文网首页
Python使用bleak连接低功耗蓝牙读数据和接收通知

Python使用bleak连接低功耗蓝牙读数据和接收通知

作者: itfitness | 来源:发表于2023-04-19 09:47 被阅读0次

实现代码

import asyncio
from bleak import BleakClient

# 蓝牙设备的MAC地址
DEVICE_ADDRESS = ""
# 写数据的UUID
SERVICE_WRITE_UUID = "0000fff2-0000-1000-8000-00805f9b34fb"
# 接收通知的UUID
SERVICE_NOTIFY_UUID = "0000fff1-0000-1000-8000-00805f9b34fb"

# 发送的数据(这里是要发送的指令)
openDoor_send = [0x68, 0x06, 0x01]

# 记录数据
watchData = []


async def main(address):
    async with BleakClient(address) as client:
        try:
            # 是否连接
            if not client.is_connected:
                client.connect()
            print(f"Connected: {client.is_connected}")
            # 是否配对
            paired = await client.pair(protection_level=2)
            print(f"Paired: {paired}")
            # 开启通知的接收
            await client.start_notify(SERVICE_NOTIFY_UUID, notify_callback)
            # 循环发送指令
            while client.is_connected and paired:
                print("send data")
                await client.write_gatt_char(SERVICE_WRITE_UUID, bytes(openDoor_send))
                await asyncio.sleep(3.0)
            print('Disconnected')
        except Exception as e:
            print(f"Exception during write_and_listen loop: {e}")
        finally:
            # 结束监听
            await client.stop_notify(SERVICE_NOTIFY_UUID)
            # 断开与蓝牙设备的连接
            await client.disconnect()
            print("结束")


# 回调监听
def notify_callback(sender, data):
    try:
        # 有的数据一次发送不完所以需要判断一下拼接到一起
        for temp in data:
            watchData.append(temp)
        if data.hex().endswith("16"):
            # 处理从设备发来的Notify数据
            print(f"Received notification from {sender}: {data.hex()}")
            print(len(watchData))
            print(f"HeartRateData: {str(watchData[5])}")
            print(f"BloodOxygenData: {str(watchData[24])}")
            print(f"SystolicBloodPressureData: {str(watchData[25])}")
            print(f"DiastolicBloodPressureData: {str(watchData[26])}")
            watchData.clear()
    except Exception as e:
        print(f"Exception during write_and_listen loop: {e}")


if __name__ == '__main__':
    try:
        asyncio.run(main(DEVICE_ADDRESS))
    except:
        pass

相关文章

  • Android BLE蓝牙详细解读(一)

    本文主要讲解Android低功耗蓝牙的api使用以及蓝牙扫描、连接、发送数据、接收数据等一系列操作,本篇结尾有本人...

  • 蓝牙连接

    1.蓝牙搜索 2.蓝牙连接 3.注册收发数据的通知 **##4.发送数据 5.接收数据 下载Demo--> 我的g...

  • ionic 2 低功耗蓝牙连接心率带

    心率带调试数据整理 1.低功耗蓝牙4.0 连接 返回的service数据如下 {"name":"Polar H7...

  • Android BLE 连接及数据传输详解

    本文将展开对蓝牙低功耗从扫描蓝牙设备,建立连接到蓝牙数据通信的详细介绍,以及详细介绍GATT Profile(Ge...

  • BLE蓝牙抓包工具使用尝试

    没接触过低功耗蓝牙协议,也没实际开发过和低功耗蓝牙有关的东西,最近需要获取一款低功耗蓝牙产品的数据,听说有专门的低...

  • android5.0 进行蓝牙广播(BLE Periphera

    具有低功耗蓝牙模块的设备可以扮演2个角色,中心,周边。周边是数据提供者,中心是数据接收/处理者。自Android ...

  • 1分钟读懂低功耗蓝牙广播数据

    一分钟读懂低功耗蓝牙(BLE)广播数据包 低功耗蓝牙 =》 BLE (Bluetooth Low Energy) ...

  • Android Bluetooth 使用总结

    前言 本文主要讲解经典蓝牙和BLE(低功耗蓝牙)的使用流程 一.获取蓝牙适配器 BluetoothAdapter ...

  • BLE使用

    一、BLE概述 Android4.3以上加入了BLE——低功耗蓝牙。 使用低功耗蓝牙可以包括多个Profile,一...

  • Android Ble蓝牙广播的频率

    使用低功耗蓝牙发送蓝牙广播的设置。 频率: 信号强度:

网友评论

      本文标题:Python使用bleak连接低功耗蓝牙读数据和接收通知

      本文链接:https://www.haomeiwen.com/subject/lwzkjdtx.html