0

我正在将一个字节数组的数据写入 Android 中的 BLE 设备。调用后调用回调方法mGatt.writeCharacteristic(characteristicToWrite);onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)如果写操作成功状态将是 0 即GATT_SUCCESS = 0,而不是那个即时接收状态为 7 即GATT_INVALID_OFFSET = 0x7。为什么会这样?有谁能够帮我。先谢谢同行。

4

1 回答 1

0

因为运行 GATT 服务器的外设写错了。

我假设您有一个“长”值,这意味着一个大于一个 ATT 数据包的值。然后在以下情况下应发回 Invalid Offset 错误:

如果准备值偏移量大于属性值的当前长度,则应丢弃该客户端的所有未决准备写入值,清除队列,然后发送带有“无效偏移量”的错误响应。

但是,每当 Android 写入 Long 值时,它会将每个块的偏移量设置为之前块长度的累积总和。

因此,只需检查外围设备上发生的情况。

于 2018-02-12T13:53:03.407 回答