你好所有的,
我使用BLE外设示例作为参考,我添加了一个特性,我想交换大约180字节的数据。
我能够发送180字节的数据到移动应用程序(测试BLE扫描仪为iOS和nrf连接为安卓),
然而,当我想通知相同的数据使用应用程序我不能得到正确的数据在一个镜头,
这是在固件中,我做了一个规定,当我收到一个特定的命令从BLE应用程序的固件应该回复这些180字节的数据,
但当我在应用程序中检查这个时,我只得到一半的数据,然后当我重新通知数据时,数据是正确的。
所以请帮助我,以便我能在一个镜头中得到正确和完整的数据,
我在下面附上了图片供参考
请尽早帮助。
感谢和问候
Utkarash
设备:

嗨Utkarash,
如果您检查附加文件的第2页(“Half data receive”),您将看到您得到预期的20字节。对于通知,一个设备可以发送一个特性的通知的字节数是由MTU (Maximum Transfer Unit)限制的,MTU默认为23字节,包括ATT层开销,所以一个通知的有效载荷是20字节。通过增加MTU大小,这意味着您可以在一个通知上发送更多字节,因此在您的情况下,最大传输单元应该是您想要发送的字节数量+ 3个额外字节。您应该修改user_config.h头文件的user_gapm_conf结构的.max_mtu。在此之后,为了与中央执行交换,当您有一个连接(在user_on_connection中)时,应该发送GATTC_EXC_MTU_CMD,并且580将执行交换。没有实现这样的API,但你可以使用下面的代码片段:
Static user_gattc_exc_mtu_cmd(uint8_t conidx)
{
struct gattc_exc_mtu_cmd *cmd = KE_MSG_ALLOC(gattc_exc_mtu_cmd,
TASK_APP KE_BUILD_ID (TASK_GATTC conidx),
gattc_exc_mtu_cmd);
cmd - > req_type = GATTC_MTU_EXCH;
ke_msg_send (cmd);
}
谢谢,PM_Dialog
感谢您的回复,
我将按照你的建议尝试改变。
感谢和问候
Utkarash