如何处理低功耗蓝牙 (BLE) 中的自定义 UUID
How to handle customized UUID's in Bluetooth Low Energy (BLE)
我想编写一个 iOS 应用程序来将一些数据传输到嵌入式 BLE 模块,反之亦然。为了获得我的数据流的最佳结构,我使用相应的 UUID 创建了我自己的特征和服务。至此,一切正常!但是,如果我想添加第二个 BLE 模块而不更改我的嵌入式 BLE 模块中的硬编码 UUID,会发生什么情况?我是否必须为要添加的每个 BLE 模块生成全新的 UUID?在这种情况下,我也必须更改我的 iOS 应用程序,因为我必须针对特定服务和特征更改我预期的 UUID,或者?谢谢!
不,您不必为每个 BLE 模块生成新的 UUID。这不是它设计的运行方式。
只需确保您不对同一 BLE 模块中的任何特性重复使用相同的 UUID。
经验法则:
- 我不能让 BLE 模块具有两个具有相同 UUID 的特征。
- 我不能让 BLE 模块包含两个具有相同 UUID 的服务。
- 我不能让一个 BLE 模块的 UUID 一次用于服务,一次用于特性。
- 理论上我绝对可以拥有无限数量的具有相同 GATT 结构(包括所有 UUID)的 BLE 模块。
这是可能的,因为 GATT 客户端(应用程序)通过连接句柄区分和访问连接的 GATT 服务器,这超出了连接到同一应用程序的其他 GATT 服务器的范围。
我想编写一个 iOS 应用程序来将一些数据传输到嵌入式 BLE 模块,反之亦然。为了获得我的数据流的最佳结构,我使用相应的 UUID 创建了我自己的特征和服务。至此,一切正常!但是,如果我想添加第二个 BLE 模块而不更改我的嵌入式 BLE 模块中的硬编码 UUID,会发生什么情况?我是否必须为要添加的每个 BLE 模块生成全新的 UUID?在这种情况下,我也必须更改我的 iOS 应用程序,因为我必须针对特定服务和特征更改我预期的 UUID,或者?谢谢!
不,您不必为每个 BLE 模块生成新的 UUID。这不是它设计的运行方式。 只需确保您不对同一 BLE 模块中的任何特性重复使用相同的 UUID。
经验法则:
- 我不能让 BLE 模块具有两个具有相同 UUID 的特征。
- 我不能让 BLE 模块包含两个具有相同 UUID 的服务。
- 我不能让一个 BLE 模块的 UUID 一次用于服务,一次用于特性。
- 理论上我绝对可以拥有无限数量的具有相同 GATT 结构(包括所有 UUID)的 BLE 模块。
这是可能的,因为 GATT 客户端(应用程序)通过连接句柄区分和访问连接的 GATT 服务器,这超出了连接到同一应用程序的其他 GATT 服务器的范围。