1. 蓝牙HID设备开发入门指南
第一次接触蓝牙HID设备开发时,我被各种专业术语搞得晕头转向。HID(Human Interface Device)其实就是我们日常使用的键盘、鼠标这类人机交互设备。与传统USB HID不同,蓝牙HID通过无线方式实现相同功能,开发过程中需要特别注意广播配置和服务实现。
记得我刚开始做一个蓝牙键盘项目时,设备死活不被电脑识别。后来才发现是广播数据中漏掉了关键的外观标识符。这个教训让我明白,蓝牙HID开发就像搭积木,每个环节都必须严丝合缝。
2. 设备广播配置详解
2.1 广播数据结构设计
广播数据是设备被发现的"名片",必须包含三个关键元素:
- 设备标志(Flags):表明设备类型和发现模式
- HID服务UUID:固定为0x1812
- 设备外观标识符:键盘用0x03C1,鼠标用0x03C2
一个典型的键盘广播数据示例:
adv_data = b'\x02\x01\x05' + \ # Flags: LE+有限发现模式
b'\x03\x03\x12\x18' + \ # HID服务UUID
b'\x03\x19\xC1\x03' + \ # 键盘外观标识符
b'\x0D\x09' + "My Keyboard".encode("UTF-8") # 设备名称
2.2 常见广播配置问题
调试时经常遇到设备可见但无法连接的情况,多半是广播数据格式问题。我总结了几点经验:
- 长度字段必须准确,多一个字节少一个字节都会导致广播失败
- 设备名称建议使用UTF-8编码,某些系统对ASCII以外的字符支持不佳
- 广播间隔不宜过短,20-100ms是比较理想的范围
3. GATT服务实现要点
3.1 必须实现的服务特性
蓝牙H

:HID设备实战开发指南&spm=1001.2101.3001.5002&articleId=159784609&d=1&t=3&u=57269831ea3e4f17bfac050eed680583)
3940

被折叠的 条评论
为什么被折叠?



