nrfConnect 如何能够从 android 应用程序向 raspberrypi 发送超过 20 个字节?
How is nrfConnect able to send more than 20 bytes from android app to raspberrypi?
我正在尝试通过 ble 从我的 android 应用程序将 120 字节的数据写入 raspberrypi(我将 MTU 增加到所需的限制)。但我只能传输前 20 个字节。当我尝试在互联网上搜索时,我看到 android 将 ble 传输的大小限制为 20 字节,我将不得不发送多个 20 字节的数据包。
但为什么我试图从 nrfConnect android 应用程序结束相同的数据,我看到数据正在毫无问题地传输。你能帮我理解 nrfConnect 是如何将它写成数据包的吗?
由于数据被截断,我收到了来自 raspberrypi
的 GATT_SUCCESS 响应
就像信息一样,我可以从同一个应用程序使用 nrf52 芯片向我们的定制板发送 52 个字节
看起来 android 负责写入超过 20 个字节的数据。
以下是我遇到的两个案例:
案例一:
Android 应用试图将数据写入 nrf52 芯片中的自定义程序 运行。
数据大小:50 字节。
增加芯片端的BLE MTU后,应用端没有任何变化,写入成功。(gatt.writeCharacteristic(特性))
案例二:
Android 应用试图将数据写入 raspberrypi 3 中的 ble 程序 运行
数据大小 120 字节。
问题:即使在 raspberry pi 中增加 BLE MTU 后,尝试写入数据时也仅收到 20 个字节,写入响应成功。
解决方法:使用gatt.requestMtu(120)并在onMtuChanged()回调中调用write character后,能够发送全部数据。
我正在尝试通过 ble 从我的 android 应用程序将 120 字节的数据写入 raspberrypi(我将 MTU 增加到所需的限制)。但我只能传输前 20 个字节。当我尝试在互联网上搜索时,我看到 android 将 ble 传输的大小限制为 20 字节,我将不得不发送多个 20 字节的数据包。
但为什么我试图从 nrfConnect android 应用程序结束相同的数据,我看到数据正在毫无问题地传输。你能帮我理解 nrfConnect 是如何将它写成数据包的吗?
由于数据被截断,我收到了来自 raspberrypi
的 GATT_SUCCESS 响应就像信息一样,我可以从同一个应用程序使用 nrf52 芯片向我们的定制板发送 52 个字节
看起来 android 负责写入超过 20 个字节的数据。
以下是我遇到的两个案例:
案例一:
Android 应用试图将数据写入 nrf52 芯片中的自定义程序 运行。
数据大小:50 字节。
增加芯片端的BLE MTU后,应用端没有任何变化,写入成功。(gatt.writeCharacteristic(特性))
案例二:
Android 应用试图将数据写入 raspberrypi 3 中的 ble 程序 运行
数据大小 120 字节。
问题:即使在 raspberry pi 中增加 BLE MTU 后,尝试写入数据时也仅收到 20 个字节,写入响应成功。
解决方法:使用gatt.requestMtu(120)并在onMtuChanged()回调中调用write character后,能够发送全部数据。