gpt4 book ai didi

android - 了解自定义 BLE UUID

转载 作者:行者123 更新时间:2023-11-29 12:01:35 26 4
gpt4 key购买 nike

我希望创建一个跨平台应用程序,允许我定期发布设备 Mac 地址(尽管我已经意识到出于某种原因我收到了 3 个单个设备。)以便它可以被记录并用于引用简短的手动用户广告,这样每个广告都可以被特定用户识别;然而,似乎我陷入了关于 BLE 上的 UUID 的问题

搜索了一段时间后,我对 BLE 服务中的 UUID 似乎还是有点困惑。最初我决定使用自定义 BLE,它反复失败,要么出现奇怪的错误,要么由于数据包太大,即使数据只有 1 个字节长。我意识到 UUID 的格式必须是 xxxxxxxx-0000-1000-8000-00805F9B34FB。超出此范围的任何内容都会发送完整的 UUID,该 UUID 在未连接的情况下进行广告时太大。我还发现我可以在上半部分 (0000XXXX) 使用任何不在保留范围 0x000E0x01FF 中的 UUID 前缀。

这是一个正确的假设吗?我可以使用任何不与标准冲突的 UUID,即 00000200 - 0000FFFF。我问是因为在选择该范围内的 UUID 时我似乎遇到了问题,据我所知,在范围外创建自定义 UUID 在 BLE 上是一个坏主意,因为它将被迫使用 20-23 个可用字节中的 16 个。对此有任何意见吗?

此外,它们是否是一种预定义的方式来发送用户设备的广告,以便它可以被缓存并用于识别其他用户广告?

编辑:

项目中需要以无连接的方式跨平台连接手机和其他设备。最初我计划让设备重复宣传其身份以及可用于唯一识别用户消息的名称和唯一 MAC 地址。任何没有缓存用户身份的设备都会简单地丢弃来自该用户的传入数据包。 – kdgwill 9 分钟前

我实际上认为,如果我能以某种方式一次连接到 5-10 台设备会更容易;但是,这样做的目的是不要在添加新设备时通过反复提示来打扰用户。因此,我认为使用广告和泛洪会有所帮助,但消息大小会有所不同。是否有可能打扰用户一次连接提示并自动连接每个额外的 BLE 设备。如果我能以某种方式在 1 对 1 的基础上连接多个设备,而不必每次都提示用户,同时仍然扫描其他可能的连接,那将非常有用,但我认为 BLE 不允许这样做。 – kdgwill 8 秒前编辑

使用 identifierForVendor 或 CBAdvertisementDataServiceUUIDsKey 是唯一识别每个用户的好方法;但是,这意味着如果我不使用其中一个已注册的 UUID,我可能暂时只能随机选择一个。开销将是 4-16 + 无论识别每个数据包需要多少字节。

最佳答案

如果您向蓝牙联盟注册设备,则只能使用较短的 4 字节 UUID,否则,您必须使用较长的 16 字节 UUID。

您是正确的,您可以为服务(和特征)选择 16 字节的 UUID。您应该准随机地选择 ID,并始终为该特定类型的服务/特征使用相同的 UUID。

因为您发送的每个数据包都必须包含目标服务 UUID,使用较长的 UUID 会占用负载中的大量可用字节。每个数据包的可用字节较少意味着必须为更大的消息发送更多的数据包,从而增加发送消息所需的时间。如果您不发送消息,而只是使用广告数据,那么这不是问题,尽管您将有更少的字节可用于广告数据。

MAC 地址在使用 iOS 蓝牙框架的代码中不可用。 iOS 8+ 可以发送一个随机的 MAC 地址,所以你不应该指望通过它来识别设备。

由于 MAC 地址对您不可用,您可能希望通过 BLE 连接连接并发送一个唯一 ID(例如 identifierForVendor),或者可能在广告数据中包含一个小 ID通过 CBAdvertisementDataLocalNameKey

关于android - 了解自定义 BLE UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36773293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com