☰
【沁恒蓝牙开发】获取从机Notify的handle
2026/10/31 7:04:54 网站建设 项目流程

在收发数据的时候 notify 发送数据的API返回值是发送成功,使用抓包器监听空中的数据包也确认数据发送了,但是APP始终没有收到notify的数据。

handle 是什么?

handle 本质:GATT 属性表里的对应uuid的编号,用于对应uuid。
BLE 设备作为 GATT Server 时,内部维护一张 Attribute Table。
表里每一行就是一个 Attribute,通常包含四部分:

Handle:2 字节,0x0001 ~ 0xFFFF,是这一行属性的唯一地址。
Type:UUID,说明这个属性是什么类型。
Value:实际数据。
Permissions:访问权限,比如是否允许读/写。
你可以把它理解成一张数据库表,如下:

HandleTypeValuePermissions
0x0010Service Declaration电池服务 UUID可读
0x0011Characteristic Declaration属性 + Value Handle可读
0x0012Characteristic Value当前电量可读/Notify
0x0013CCCD订阅状态可写

UUID 告诉客户端“这是什么”,Handle 告诉协议栈“去操作哪一行”。ATT 报文里真正用来寻址的就是 Handle,而不是 UUID,并且一个完整的 特征值会占好几个 handle。上面的

Characteristic Declaration Handle
UUID = 0x2803
它的作用是声明这个特征有哪些属性,比如 Read、Write、Notify、Indicate。

Characteristic Value Handle
这是真正存数据的地方。
Read、Write、Notify、Indicate 操作的对象都是这个 Handle。

CCCD Handle
UUID = 0x2902
它不是数据本身,而是“订阅开关”,即使能/关闭CCCD

如何确认handle?

蓝牙分析仪

最快也是最方便的方法就是使用蓝牙分析仪抓包看看,只要连接成功后就可以查看到对应的Handle.

直接数

例程内notify的handle是Attribute表内的第11个

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询