蓝牙的服务和特征值的含义

一、基本概念

服务(Service)

定义:一组相关功能的数据集合,代表设备的某个特定能力

类比:就像手机中的不同功能模块(通讯录、短信、音乐播放器)

每个服务有一个唯一的UUID(通用唯一标识符)

特征值(Characteristic)

定义:服务中的具体数据点,包含实际可读/可写的数据

类比:服务中的具体设置项(如音量大小、播放状态)

包含:值(Value)和描述符(Descriptors)

二、常见标准服务示例

  1. 设备信息服务 (UUID: 0x180A)
    特征值:

制造商名称 (0x2A29)

设备型号 (0x2A24)

序列号 (0x2A25)

  1. 电池服务 (UUID: 0x180F)
    特征值:

电量百分比 (0x2A19)

  1. 心率服务 (UUID: 0x180D)
    特征值:

心率测量值 (0x2A37)

传感器位置 (0x2A38)

三、特征值属性

每个特征值有属性定义其用途:

属性 含义 示例

Read 可读取数据 读取设备名称

Write 可写入数据 设置设备参数

Notify 服务器主动通知客户端 实时心率数据推送

Indicate 带确认的通知 重要状态变化

四、工作流程

text

设备(外设)

├── 服务1:电池服务

│ ├── 特征值1:电量百分比(Read, Notify)

│ └── 特征值2:充电状态(Read, Notify)

├── 服务2:自定义服务

│ ├── 特征值1:控制命令(Write)

│ └── 特征值2:状态反馈(Read, Notify)

└── 服务3:...

五、实际应用示例

智能手环:

服务:心率监测 (0x180D)

特征值:心率数据 (可Notify实时推送)

特征值:传感器位置 (可Read)

服务:自定义运动服务

特征值:步数数据 (可Read)

特征值:运动模式设置 (可Write)

六、UUID格式

16位UUID:蓝牙SIG定义的官方服务

例:0x180F(电池服务)

128位UUID:自定义服务

例:0000XXXX-0000-1000-8000-00805F9B34FB

七、通信过程

发现服务:客户端扫描设备可用服务

发现特征值:找到服务中的具体特征

建立通信:根据属性进行读/写/通知操作

八、开发要点

服务定义设备的功能模块

特征值定义具体的数据接口

通过属性控制访问权限

使用Notify/Indicate实现实时数据流

理解服务和特征值的关系是蓝牙开发的基础,这种结构化的设计使得蓝牙设备能够标准化地提供各种功能,同时也支持自定义扩展。

相关推荐
秦先生在广东3 分钟前
Block/Buzz:用 Nostr 协议把 AI Agent 变成有密钥的真正队友
人工智能
审小匠OpenCPAi5 分钟前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
何时梦醒8 分钟前
Vibe Coding 驾驭指南:别让 AI 把你的项目写成屎山
人工智能
Hrain-AI9 分钟前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
美狐美颜sdk10 分钟前
直播APP开发实战:从直播推流到AI美颜SDK完整方案详解
人工智能·美颜sdk·直播美颜sdk·美颜api
大模型任我行10 分钟前
蚂蚁:智能体安全护栏SingGuard-NSFA
人工智能·语言模型·自然语言处理·论文笔记
就是一顿骚操作15 分钟前
GPT-2 from scratch with torch:用 torch 从零实现 GPT-2
人工智能·gpt·transformer·论文解读·gpt-2
oort1231 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
AI小码1 小时前
把动作「画」给视频世界模型,跨本体双向推演,李飞飞参与
大数据·人工智能·算法·ai·大模型·音视频·编程
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app