开发: 什么是gatt,它如何工作?
Gatt的概念
进行与BLE相关的开发, 我们必须有某些基本知识, 当然, 一定很简单.
加特 设备角色:
首先要理解的是,这两个角色之间的区别是在硬件级别, 它们是成对出现的相对概念:
“中央设备”: 相对强大, 用于扫描和连接外围设备, 例如手机, 平板电脑, 等.
“外围设备”: 该功能相对简单, 功耗很小, 并连接中央设备以提供数据, 例如腕带, 智能温度计, 等.
实际上, 最基本的水平, 在建立连接的过程中,它应该是不同角色之间的区别. 我们知道,如果蓝牙设备想让其他人知道它的存在, 它需要不断向外界广播, 虽然另一方需要扫描并回复广播包, 以便可以建立连接. 在此过程中, 负责广播的人是外围的 , 中心负责扫描.
注意两个之间的连接过程:
中央设备可以同时连接到多个外围设备。, 它将立即停止广播, 并在断开连接后继续进行广播。只有一个设备可以随时尝试连接, 排队连接.
加特 协议
BLE技术根据Gatt进行通信. GATT是属性传输协议. 它可以被视为属性传输的应用层协议.
它的结构非常简单:

您可以将其理解为XML:
每个Gatt都由执行不同功能的服务组成;
每项服务都由不同的特征组成;
每个特征都由一个值和一个或多个描述符组成;
服务和特征等效于标签 (服务等同于其类别, 和特征等同于其名称), 虽然值实际上包含数据, 描述符是对此值的解释和描述. 当然, 我们可以从不同角度描述和描述它. 描述, 因此可以有多个描述符.
例如:普通小米mi频段是一个ble设备, (假定) 它包含三个服务, 这是提供设备信息的服务, 提供步骤的服务, 以及检测心率的服务;
设备信息服务中包含的特征包括制造商信息, 硬件信息, 版本信息, ETC。; 心率服务包括心率特征, ETC。, 心率特征的价值实际上包含心率数据, 描述符是值. 描述, 例如价值单位, 描述, 允许, 等.
gatt c/s
对Gatt有初步的了解, 我们知道Gatt是典型的C/S模式. 因为它是c/s, 我们有必要区分服务器和客户端.
“GATT服务器” vs. “Gatt客户端”. 建立连接之后,这两个角色存在的阶段, 他们根据对话的状态进行区分. 很容易理解持有数据的政党称为GATT服务器, 访问数据的政党称为GATT客户端.
这是一个与我们之前提到的设备角色不同的概念, 有必要区分它. 让我们用一个简单的例子说明:
以手机和手表为例. 在建立手机和手机之间的连接之前, 我们使用手机的蓝牙搜索功能来搜索手表的蓝牙设备. 在此过程中, 显然,该手表正在广播播放,以便其他设备知道其存在. , 这是外围在此过程中的作用, 手机负责扫描任务, 自然会扮演中心的角色; 两者建立一个gatt连接之后, 当手机需要读取传感器数据时,例如手表的步骤数, 这两个交互式数据保存在手表中, 因此,此时手表是Gatt服务器的角色, 手机自然是Gatt客户; 当手表想阅读SMS电话和其他信息时, 数据的监护人变成手机, 因此,手机目前是服务器, 手表是客户.
服务/特征
我们已经对它们有感知的理解, 然后我们有一些实用信息:
- 特征是数据的最小逻辑单元.
- 在价值和描述符中存储的数据分析由服务器工程师确定, 没有规格.
- 服务/特征具有唯一的UUID标识, UUID具有16位和128位, 我们需要了解的是,16位UUID已由蓝牙组织认证,需要购买, 当然有一些常见的16位UUID。例如, 心率服务的UUID为0x180D, 该代码中的表示为0x00001800-0000-0000-1000-1000-8000-00805F9B34FB, 和其他位是固定的. 可以自定义128位UUID.
- Gatt连接是独家的.