【问题标题】:Byte order of multiple fields in one BLE characteristic一个BLE特性中多个字段的字节顺序
【发布时间】:2019-03-14 11:30:29
【问题描述】:

在 bluetooth.org 上,我看到一个 BLE 特性可以有多个字段。我现在搜索了一段时间,但没有得到关于字节顺序的答案。

例如这个特性: https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gatt.service_changed.xml

它有两个字段。 “受影响的属性句柄范围的开始”是高16位还是低位?

问候 马兹

【问题讨论】:

    标签: bluetooth-lowenergy core-bluetooth


    【解决方案1】:

    GATT 字段总是(或至少应该总是)little-endian。这在Bluetooth Core Spec 中进行了讨论。

    来自规范的 v4.2,第 3 卷,G 部分(涵盖 GATT),第 523 页:

    2.4 配置文件基础

    ...

    • GATT 配置文件中的多字节字段应首先发送最低有效字节(小端)。

    请务必仔细阅读本规范,因为有 部分按网络顺序(大端),但 GATT 属性始终应该采用小端。

    (我说“应该永远是”的唯一原因是蓝牙设备的一个规则是,您总是会在该领域找到一些违反规则的设备......但规范很明确。)

    【讨论】:

    • 谢谢,但是对于上面提到的例子,这意味着什么?字节顺序现在很清楚了,但是在上面的例子中 START 还是 END 更重要?
    • 第一个 uint16 是开始,第二个 uint16 是结束。字段按列出的顺序排列;这与那里的更高或更低无关。读取前 16 位;这是第一个字段。第二个 16 位是第二个字段。等等。
    • 好吧,在 Android 或 iOS 上读取值只会返回一个 32 位字段。所以我知道高16位是开始字段。
    • 在 iOS 上,CBCharacteristic.value 是一个数据。所以你应该期望 value[..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    相关资源
    最近更新 更多