BLE中的数据交换

概述

我们会详细讲解GATT的基本概念、服务与特征的组织结构、数据表示方法,以及常见的数据交互流程。随后,通过实际练习让你动手实现蓝牙LE环境下的数据收发能力和自定义服务。]


学习目标

  • 理解GATT服务和特征的基本原理与结构

  • 掌握蓝牙LE下数据交换的核心机制

  • 学会配置和管理自定义GATT服务与特征

  • 通过编程操作实现两设备间的数据交互


GATT操作


服务器可以主动将数据发送给客户端,也可以由客户端主动“轮询”获取。客户端要想准确请求数据,首先要知道GATT服务器都有哪些服务和特征。因此,客户端在连接刚建立时,会率先执行“服务发现”步骤,以获知服务端有哪些服务和特征,然后才执行后续的数据读取/写入/订阅等操作。


定义

  • 服务发现(Service discovery):指GATT客户端遍历GATT服务器Attribute表,发现其中所有服务与特征的流程。


数据访问

GATT通信基于客户端-服务器架构,服务端持有所有数据,可以主动推送,也可以等待客户端请求。GATT操作可分为“客户端发起”与“服务器发起”两大类。


客户端发起的操作

客户端发起指GATT客户端主动向服务器请求数据,可包括读取或写入目标Attribute。写入又分为带/不带服务器响应两种。

  • 读取(Read):客户端向服务器发送读取请求,服务器返回目标Attribute的当前值。

  • 写入(Write):客户端向服务器发送写入请求,并提供目标格式的数据,服务器接受后会回写确认响应。

  • 无响应写入(Write without response):如功能开启,客户端可无需等待确认直接写数据给服务器,适合需要高频、低延迟的场景。


服务器发起的操作

GATT服务器还可以主动向客户端推送信息(无需请求)。属于这种操作的有通知(Notify)和指示(Indicate)。

详细练习见本课练习2。

  • 通知(Notify):服务器自动将某个Attribute当前值推送给客户端,无需客户端主动请求。这在如传感器采集数据变化等主动告知场景很常见。通知不要求客户端确认或回复。

  • 指示(Indicate):与通知类似,也是服务器自动推送数据,但要求客户端必须返回确认(Acknowledgement)。因需要确认机制,每个连接间隔只能有一次指示,速度低于通知。

注意,这类服务器发起的操作尽管数据来自服务器,但前提是客户端必须先订阅该特征并允许通知/指示(通过写Client Characteristic Configuration Descriptor);具体细节在后续内容中讲解。

posted @ 2025-11-25 17:53  毛豆*_*  阅读(93)  评论(0)    收藏  举报