Bluetooth GATT详解:服务与特性的发现、读写

需积分: 9 7 下载量 109 浏览量 更新于2024-07-09 收藏 2.56MB PDF 举报
"Bluetooth GATT介绍 .pdf" 蓝牙低功耗(Bluetooth Low Energy,BLE)技术中的GATT(Generic Attribute Profile)是核心组件之一,它为应用层提供了一个基于属性的交互模型,允许设备间进行数据交换和服务发现。GATT主要用于物联网(IoT)设备,如传感器和可穿戴设备,因为它的低功耗特性使其非常适合于短距离、小数据量的通信场景。 GATT定义了一套服务架构,这些服务由服务器端提供,并由客户端发现和访问。服务由一系列的特征(Characteristic)组成,每个特征可能包含多个值,可以被读取、写入或者订阅以获取实时更新。服务和特征是GATT的核心概念,它们定义了设备如何暴露其功能和接收或发送数据。 服务(Service)在GATT中是一个逻辑单元,它可以是基本服务(Primary Service)或复合服务(Secondary Service)。基本服务由一个或多个16位或128位UUID(Universally Unique Identifier)标识,包含了相关的特征和其他服务。复合服务则依赖于其他服务,它们可以用来组织和扩展服务结构。 特征(Characteristic)是数据实际存储和传输的地方。每个特征都有一个UUID,可以是可读、可写、可通知或可指示。可读特征允许客户端读取其值,可写特征允许客户端写入新值,而通知和指示则用于实现双向通信。通知是单向的,服务器可以主动将更新推送给已订阅的客户端,而指示则需要客户端确认接收到数据。 GATT的交互流程通常包括以下步骤: 1. 服务发现:客户端通过扫描和连接到服务器,然后查询服务器提供的服务列表。 2. 特征发现:客户端在选定的服务中查找感兴趣的特征。 3. 数据交互:客户端读取特征值、写入新的值,或者订阅特征以接收通知或指示。 在蓝牙协议栈中,GATT运行在L2CAP(Logical Link Control and Adaptation Protocol)之上,L2CAP处理更底层的数据传输。GATT并不依赖于控制器的角色(Master/Slave),因此,设备可以同时作为客户端和服务器,根据需求进行交互。 在实际应用中,比如在计算机与温度传感器的例子中,计算机作为GATT客户端,发起请求以读取传感器(作为GATT服务器)的温度值。这样的设计使得不同类型的设备能够灵活地相互作用,实现了蓝牙设备间的高效、低功耗通信。