我正在尝试从我的Android应用程序通过ble到raspberrypi写一个120字节的数据(我将MTU增加到所需的限制)。但我能够传输的只是前20个字节。当我试图在互联网上搜索时,我发现android将大小限制为20字节进行传输,我将不得不发送多个20字节数据包。
但是为什么我试图从nrfConnect android app结束相同的数据,我看到数据正在被转移而没有任何问题。你能帮我理解nrfConnect如何将它写成数据包吗?
通过数据被截断,我从raspberrypi获得GATT_SUCCESS响应
就像信息一样,我可以使用来自同一应用程序的nrf52芯片向我们的自定义主板发送52个字节
答案 0 :(得分:0)
看起来android负责编写超过20个字节的数据。
以下是我遇到的两个案例:
案例1:
Android应用尝试将数据写入在nrf52芯片中运行的自定义程序。
数据大小:50个字节。
在芯片端增加BLE MTU后,写入成功而没有从应用程序端进行任何更改。(gatt.writeCharacteristic(characteristic))
案例2:
Android应用尝试将数据写入在raspberrypi 3中运行的ble程序
数据大小120字节。
问题:即使在增加覆盆子pi中的BLE MTU之后,当尝试写入数据时,只接收到20个字节,并且写入响应成功。
解决方案:使用gatt.requestMtu(120)并在onMtuChanged()回调中调用写字符后,能够发送整个数据。