nRF Connect数值变更通知服务适配及BTool订阅方法咨询
nRF Connect支持的变更触发推送服务类型
nRF Connect本身没有对支持变更触发(非周期推送)的服务做额外限制,所有符合BLE GATT规范、对应特征值(Characteristic)开启了Notification或Indication属性的服务,都可以实现仅在数值变更时触发推送:
- 标准GATT服务:常见的包括你用到的
Battery Service(UUID 0x180F)、心率服务(UUID 0x180D)、环境传感服务(UUID 0x181A)、自定义HID服务等,只要对应特征配置了Notification/Indication属性即可 - 私有自定义服务:你基于TI Launchpad自行定义的私有GATT服务,只要对应特征开启Notification/Indication属性,也可以正常被nRF Connect支持,实现变更触发推送
注:Notification不需要接收方返回确认回执,Indication需要接收方返回ACK,你可以根据业务的可靠性需求选择对应属性
BTool订阅Battery Level服务通知的操作步骤
Battery Level是Battery Service下的标准特征,UUID为0x2A19,默认支持Notification属性,按照以下步骤操作即可启用订阅:
- 先确认TI Launchpad烧录的固件已经为Battery Level特征添加了Client Characteristic Configuration Descriptor (CCCD),这是BLE通知功能启用的必填配置,CCCD的固定UUID为
0x2902 - 打开BTool,完成TI Launchpad和你三星S21上nRF Connect的BLE配对连接,确认连接状态正常
- 在BTool左侧功能栏找到GATT分类,点击选择
Discover All Characteristics and Descriptors,等待扫描完成后,在服务列表中找到UUID为0x180F的Battery Service,展开后找到UUID为0x2A19的Battery Level特征 - 展开Battery Level特征,选中其下UUID为
0x2902的CCCD描述符,选择写入操作:- 启用Notification推送:写入值为
0x0001(小端序,部分BTool版本可以直接勾选「Enable Notification」选项,工具会自动写入对应值) - 启用Indication推送:写入值为
0x0002
- 启用Notification推送:写入值为
- 写入成功后订阅立即生效,后续当nRF Connect端的Battery Level数值发生变更时,会自动向TI Launchpad推送数值,你可以在BTool的日志窗口直接查看推送的变更记录
内容的提问来源于stack exchange,提问作者Mario Mateaș
相关产品推荐
相关产品推荐

