蓝牙BLE可靠写入无法按预期工作

时间:2017-11-29 14:22:07

标签: android bluetooth-lowenergy

以下是我可靠的gatt特性可靠写入函数和字节数组byte1的值大于20个字节。

table

1 个答案:

答案 0 :(得分:0)

首先,您无法同时处理多项GATT请求。由于writeCharacteristic和executeReliableWrite都是对对等设备的请求(beginReliableWrite不是请求,但只在Android&#BLE堆栈中设置了一个标志,以下写入"可靠写入"),您需要先等待onCharacteristicWrite,直到你被允许发送executeReliableWrite。

现在,关于错误代码17,我认为这对应于ATT错误代码Insufficient Resources 0x11。要处理这个问题,您需要检查外围设备发送错误代码的原因。

你还应该知道Android有一个设计错误,可靠的写入并不可靠。协议是数据首先发送到服务器,然后服务器将相同的数据发送回客户端。根据GATT规范,客户端必须验证接收的数据是否等于发送的数据,否则必须中止。不幸的是,在Android的蓝牙堆栈中,C和Java层之间的信息丢失了,因此无法验证这一点。