【问题标题】:BLE Peripheral not displaying correctlyBLE 外设无法正确显示
【发布时间】:2019-11-04 15:43:49
【问题描述】:

我目前在连接外围设备时遇到了一些问题。我们外围设备中的蓝牙模块最初似乎没有宣传名称。我发现一旦我第一次连接到外围设备,它就会更新名称,然后我的扫描仪就能看到正确的名称。

我不明白为什么会这样。我还使用我们正在开发的 Swift 应用程序以及 iOS 和 Android 上的一系列蓝牙扫描仪进行了尝试,所以我不认为这是扫描仪端的操作系统或编程错误。

是否应该在外围设备上设置特定参数。由于我只是应用程序开发人员,我对模块如何处理流程不是很了解。

任何帮助将不胜感激。

只是为了确认扫描仪在连接一次之前看不到外围设备的名称。在此之后它将开始显示名称。更改外围设备名称后,旧名称仍会显示,直到我再次连接到它。

【问题讨论】:

  • 您可以使用 LightBlue.app 进行检查(我不是开发人员,它只是 AppStore 上一个很好的调试应用程序)。看看你是否看到它。否则,您可能不会为它做广告,并且由于广告数据是成块的,请检查(使用正确的扫描选项),它出现了多次,并且有一次带有它的名称。
  • 名称既可以包含在 GATT 名称特征中,也可以包含在广告数据中。您可以从广告数据中提取名称字段,以确保获得正确的名称。
  • 我知道该设备正在做广告,因为当使用 AppStore 中的“Bluetooth BLE Device Finder”应用程序时,该应用程序会自动尝试连接到所有外围设备,因此名称正在更新。因此我知道它正在被宣传,并且仅在初始连接时更新名称。

标签: bluetooth bluetooth-lowenergy core-bluetooth ios-bluetooth


【解决方案1】:

要显示您需要在 advertisementData 字典中查看的设备名称,该字典包含多个取决于您的设备的键,在来自 CentralManager 的 didDiscoverPeripheral 回调中。

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *, id> *)advertisementData RSSI:(NSNumber *)RSSI

您可以查找密钥CBAdvertisementDataLocalNameKey

如果您没有看到该名称,您可以在固件中进行更改以在 GATT 特征中包含一个名称。

您可以使用 LightBlue 应用程序验证一次。这是一款在应用商店中测试 BLE 设备的好应用。

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多