【问题标题】:IOBluetooth is returning no characteristics for some servicesIOBluetooth 未返回某些服务的特征
【发布时间】:2014-01-09 22:05:09
【问题描述】:

我正在尝试从蓝牙 LE 设备上的服务中读取特征。出于某种原因,对于某些特征,在调用-[CBPeripheralManager discoverCharacteristics:forService] 之后,peripheral:didDiscoverServices: 回调得到了 0 个特征。是否有任何变通方法可以让我了解此服务的特征?

在安装Hardware IO Tools for Xcode 并运行 PacketLogger 时,发现服务调用显然会导致 0x08 按类型读取请求(Bluetooth® 核心规范第 3 卷,第 F 部分,第 3.4.4.1 节),起始句柄=0x1a,结束句柄=0x1a,属性类型=0x2803。

此外,通过定义以下类扩展来读取受保护的字段,很明显,我感兴趣的服务 0x180a=设备信息也具有太接近舒适的 ATT 句柄:_startHandle=0x1a 和 _endHandle= 0x1a。

@implementation CBService(ProtectedProps)
- (NSNumber*) startHandle {
    return self->_startHandle;
}
- (NSNumber*) endHandle {
    return self->_endHandle;
}
@end
@implementation CBCharacteristic(ProtectedProps)
- (NSNumber*) descriptorHandle {
    return self->_handle;
}
- (NSNumber*) valueHandle {
    return self->_valueHandle;
}
@end

顺便说一句,当我在 iPhone 4S 上从 LightBlue 读取设备时,该服务运行良好,我可以读取该服务的 3 个特性。

我正在使用 Apple 蓝牙软件版本:4.2.0f6 12982 在 OSX 10.9 Mavericks 上对此进行测试。我正在测试的设备是 Livescribe 3。

这是一个实际 GATT 句柄、CBService 句柄和 UUID 的表格。在 128 位 UUID 弄乱了表格之后,它看起来像是有一个 16 位 UUID。蓝牙 4.0 第 3.1 节规定 16 位 UUID 服务“应该”为了性能而组合在一起,但我认为它们不是必须的。

  1. 0001–0004 0001–0004 uuid:1801
  2. 0005–0009 0005–0009 uuid:1800
  3. 0010–0019 0010–0019 uuid:128 位 UUID
  4. 001A–0020 001A–001A uuid:180a
  5. 0021–0023 缺失 uuid:180f
  6. 0024–002A 0021–0027 uuid:128 位 UUID
  7. 002E–0031 002B–002E uuid:128 位 UUID

【问题讨论】:

  • 我想我在使用 OLS425 的 OS X 上遇到了类似的问题。你有没有解决这个问题?在我的情况下,我只看到 180A 特性的一个子集,其中一些在读取时给出了不正确的值。
  • @JamesSnyder 我还没有解决方案。顺便说一句,在我的设备上,16 位主服务 UUID 与 128 位主服务 UUID 混合在一起,尽管根据蓝牙 4.0 第 3.1 节,它们“应该”为了性能而组合在一起。你也一样吗?
  • 我在任何地方都找不到 Livescribe SDK。有人有吗?如果需要,我可以支付。 vova@77xy.net

标签: macos bluetooth-lowenergy core-bluetooth iobluetooth


【解决方案1】:

读取 16 位 UUID 与 128 位 UUID 交错的错误可能已在 OSX 10.9.1 中修复。但是,由于计算机仍与外围设备绑定,因此仍会缓存错误值。因此,如果您之前连接到外围设备,由于缓存的 GATT 值错误,无论您重新连接或重启多少次,该错误仍会出现。

我不得不清除绑定缓存 /Library/Preferences/com.apple.Bluetooth.plist 并杀死 blued。有关详细信息,请参阅我的另一个问题 Does blued cache ATT values, and how to clear the cache?

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2019-05-22
    • 2020-07-21
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多