news 2026/7/28 11:46:10

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/7/27 7:24:03

Python可视化实战技巧(解决中文乱码的底层原理与实操步骤)

第一章:Python可视化中文乱码问题的背景与挑战 在使用Python进行数据可视化时,中文显示异常是一个常见且令人困扰的问题。当图表中包含中文标签、标题或图例时,常出现方框、小方块或空白字符,严重影响信息传达和视觉效果。这一问题…

作者头像 李华
网站建设 2026/7/27 7:24:03

json.dumps()默认无序?教你3步实现Python中JSON文件的有序存储与读取

第一章:JSON序列化默认行为的底层探源 在现代Web开发中,JSON序列化是数据交换的核心机制。理解其默认行为的底层实现,有助于开发者规避潜在的类型丢失与结构异常问题。大多数编程语言内置的JSON库在序列化对象时,遵循一套通用规则…

作者头像 李华
网站建设 2026/7/27 7:23:58

小白也能懂:用Gradio快速调用Qwen3-Reranker-4B服务

小白也能懂:用Gradio快速调用Qwen3-Reranker-4B服务 1. 为什么你需要了解这个模型? 你有没有遇到过这样的问题:在一堆搜索结果里,真正有用的信息总是藏在后面?尤其是在做多语言内容检索、技术文档查找,或…

作者头像 李华
网站建设 2026/7/27 7:14:04

高效语音增强落地|FRCRN单麦16k模型镜像全解析

高效语音增强落地|FRCRN单麦16k模型镜像全解析 1. 快速上手:三步实现专业级语音降噪 你是否遇到过这样的场景?在嘈杂的办公室录制会议纪要,背景风扇声、键盘敲击声混成一片;或是户外采访中,风噪和车流声盖…

作者头像 李华
网站建设 2026/7/26 5:50:45

多协议支持物联网平台

物联网平台 - Thinglinks-iot ## 🌟 项目简介 一个功能完备、高可扩展的物联网平台,提供完整的设备接入、管理和数据处理解决方案。支持多种网络协议,具备强大的消息解析和实时告警能力,帮助企业快速构建物联网应用。 该项目现已纳…

作者头像 李华
网站建设 2026/7/26 5:49:37

5分钟部署Z-Image-Turbo,文生图AI开箱即用实战指南

5分钟部署Z-Image-Turbo,文生图AI开箱即用实战指南 你是否还在为文生图模型下载慢、配置复杂、显存不够而头疼? 现在,只需5分钟,就能在本地跑起一个无需下载权重、启动即用、9步极速生成1024高清图的AI绘画引擎——Z-Image-Turbo…

作者头像 李华