news 2026/3/13 13:28:30

GATT 服务定义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GATT 服务定义

GATT(Generic Attribute Profile,通用属性协议)是蓝牙低功耗(BLE, Bluetooth Low Energy)技术中用于在两个设备之间传输数据的核心协议之一。GATT 定义了如何通过 BLE 连接来组织和交换数据。


一、GATT 基本概念

GATT 建立在 ATT(Attribute Protocol,属性协议)之上,使用“属性”作为数据的基本单元。GATT 的核心思想是:服务(Service) → 特征(Characteristic) → 描述符(Descriptor)的层级结构。

1. 角色定义

  • GATT Server(服务器):存储数据并响应来自客户端的请求。
  • GATT Client(客户端):发起读写请求以访问服务器上的数据。

注意:一个设备可以同时是 GATT Client 和 GATT Server(例如手机与智能手表配对时,手机读取手表心率数据,此时手表是 Server,手机是 Client;但若手表要从手机获取时间,则角色反转)。


二、GATT 服务(Service)

定义:

  • Service是一组相关的数据和功能的集合。
  • 每个 Service 由一个16-bit 或 128-bit UUID唯一标识。
  • 可以是标准服务(如 Battery Service, Heart Rate Service)或自定义服务

类型:

  • Primary Service(主服务):设备的主要功能服务。
  • Secondary Service(次服务):被其他主服务引用的辅助服务(较少使用)。

三、特征(Characteristic)

定义:

  • Characteristic 是 Service 中包含的具体数据点。
  • 每个 Characteristic 包含:
    • 声明(Declaration):说明该特征的 UUID、属性(读/写/通知等)。
    • 值(Value):实际数据内容。
    • 描述符(Descriptors)(可选):提供关于值的额外信息(如单位、格式、客户端配置等)。

属性权限(Properties)示例:

  • Read(可读)
  • Write(可写)
  • Notify(通知:Server 主动推送,无需 Client 请求)
  • Indicate(指示:类似通知,但需 Client 确认)
  • Broadcast(广播,较少用)

四、描述符(Descriptor)

  • 描述符是附加在 Characteristic 上的属性,用于描述或控制该特征的行为。
  • 最常见的描述符:
    • Client Characteristic Configuration Descriptor (CCCD):用于启用/禁用 Notify 或 Indicate。
    • Characteristic User Description:用户可读的描述文本。
    • Presentation Format:定义数据的格式(如符号、指数、单位等)。

五、GATT 服务定义示例(伪代码 / 结构)

Service: Heart Rate (UUID: 0x180D) │ ├── Characteristic: Heart Rate Measurement (UUID: 0x2A37) │ ├── Properties: Notify │ ├── Value: [flags][heart_rate] (e.g., 0x00 0x45 = 69 bpm) │ └── Descriptor: CCCD (UUID: 0x2902) │ ├── Characteristic: Body Sensor Location (UUID: 0x2A38) │ ├── Properties: Read │ └── Value: 0x01 (Chest) │ └── Characteristic: Heart Rate Control Point (UUID: 0x2A39) ├── Properties: Write └── Value: Used to reset energy expended, etc.

六、标准 vs 自定义服务

  • 标准服务:由 Bluetooth SIG 定义,使用 16-bit UUID(如 0x180F 表示 Battery Service)。
  • 自定义服务:开发者自定义,必须使用 128-bit UUID(基于 Base UUID:0000xxxx-0000-1000-8000-00805F9B34FB)。

七、开发中的注意事项

  1. MTU 大小:默认 ATT MTU 为 23 字节,可通过协商增大(提高吞吐量)。
  2. Notify/Indicate 需要 CCCD 使能:客户端必须先写入 CCCD 才能接收通知。
  3. 服务发现流程:连接后,Client 通常会执行“服务发现”以了解 Server 支持哪些服务和特征。
  4. 并发与安全:考虑加密(Bonding)、权限(Authentication/Authorization)等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 10:23:10

升级后体验翻倍!gpt-oss-20b-WEBUI最新版优化亮点

升级后体验翻倍!gpt-oss-20b-WEBUI最新版优化亮点 你有没有遇到过这样的情况:本地部署了一个大模型,结果每次调用都要等好几秒,界面卡顿、响应迟缓,甚至输入长一点的提示词就直接崩溃?如果你正在使用 gpt-…

作者头像 李华
网站建设 2026/3/13 10:57:32

广告效果测试新方法:用SenseVoiceSmall分析用户反应

广告效果测试新方法:用SenseVoiceSmall分析用户反应 在广告投放和用户体验优化中,如何准确捕捉观众的真实情绪反应一直是个难题。传统方式依赖问卷调查或眼动仪等硬件设备,成本高、样本小、反馈滞后。而现在,借助阿里巴巴达摩院开…

作者头像 李华
网站建设 2026/3/3 7:29:55

零基础玩转YOLO26:官方镜像保姆级教程

零基础玩转YOLO26:官方镜像保姆级教程 你是不是也曾经被目标检测的复杂环境配置劝退?下载依赖、编译框架、调试版本冲突……光是准备阶段就能耗掉一整天。现在,这一切都成了过去式。 今天要介绍的 “最新 YOLO26 官方版训练与推理镜像”&am…

作者头像 李华