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);具体细节在后续内容中讲解。
您的资助是我最大的动力!
金额随意,欢迎来赏!

浙公网安备 33010602011771号