1. BLE标准服务入门:揭开UUID的神秘面纱
在蓝牙低功耗(BLE)开发中,0x1800、0x1801和0x180A这三个十六进制数字就像老熟人一样频繁出现。这些被称为"标准UUID"的标识符,实际上是蓝牙技术联盟(SIG)预先定义的服务编号。当我第一次在协议栈日志里看到它们时,也曾困惑这些"魔法数字"背后到底封装了什么功能。
经过多个可穿戴设备和IoT项目的实战积累,我发现理解这些基础服务是BLE开发的必修课。它们就像蓝牙设备的功能身份证——0x1800是设备的基本信息卡,0x1801负责宣告设备状态,而0x180A则是硬件厂商的名片。掌握这些服务特性,不仅能快速诊断设备通信问题,还能在自定义服务时避免功能重复设计。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 0x1800详解:Generic Access服务解剖
2.1 服务功能定位
Generic Access服务(0x1800)是每个BLE设备必须实现的基础服务,相当于设备的"门面招牌"。在智能手环项目中,我们曾通过这个服务快速识别设备类型和连接参数。其核心包含两个关键特性:
- 设备名称(Device Name):最大20字节的UTF-8字符串
- 外观类别(Appearance):16位编码,定义设备物理形态
2.2 关键特征值解析
cpp复制// 典型GATT结构示例
Service UUID: 0x1800 (Generic Access)
├── Characteristic UUID: 0x2A00 (Device Name)
│ ├── Properties: Read, Write
│ └── Value: "FitnessTracker-123"
└── Characteristic UUID: 0x2A01 (Appearance)
├── Properties: Read
└── Value: 0x00C0 (Wristwatch)
实际开发中发现:Android设备会缓存第一次读取的设备名,修改后需要重启蓝牙服务才能更新
2.3 典型应用场景
在医疗设备配对时,我们利用0x2A03特征实现快速过滤:
- 扫描时优先读取0x1800服务
- 解析Appearance值0x0340(Blood Pressure Moni
