nrfConnect如何从Android应用程序发送超过20个字节到raspberrypi?

时间:2018-03-12 06:08:31

标签: android bluetooth-lowenergy raspberry-pi3 android-ble

我正在尝试从我的Android应用程序通过ble到raspberrypi写一个120字节的数据(我将MTU增加到所需的限制)。但我能够传输的只是前20个字节。当我试图在互联网上搜索时,我发现android将大小限制为20字节进行传输,我将不得不发送多个20字节数据包。

但是为什么我试图从nrfConnect android app结束相同的数据,我看到数据正在被转移而没有任何问题。你能帮我理解nrfConnect如何将它写成数据包吗?

通过数据被截断,我从raspberrypi获得GATT_SUCCESS响应

就像信息一样,我可以使用来自同一应用程序的nrf52芯片向我们的自定义主板发送52个字节

1 个答案:

答案 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()回调中调用写字符后,能够发送整个数据。