完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用例程修改功能,发现在修改MTU加上app 发送了MTU request (512)后,app 读特征值数据的时候可以一次性读入42个字节数据,但是app 向 ESP32 写入数据的时候不能大于20字节,起初我以为是app的问题,后来用sniffer 抓包发现app 确实写下了42字节,但是ESP32 没有回应,最后重发N次后判断超时,断开连接。
请问有哪位大神知道怎么设置接收数据也能接收大于20字节的办法。 |
|
相关推荐
1个回答
|
|
要解决这个问题,我们需要确保ESP32的BLE配置正确,以便接收大于20字节的数据。以下是一些关键步骤:
1. 首先,确保ESP32的BLE配置支持较大的MTU(最大传输单元)大小。在ESP32的BLE配置中,将MTU设置为512字节或更高。这可以通过修改`esp_ble_gatt_set_local_mtu()`函数的参数来实现。 ```c esp_err_t esp_ble_gatt_set_local_mtu(uint16_t mtu); ``` 2. 在ESP32的BLE GATT服务器初始化过程中,设置MTU大小。这可以通过调用`esp_ble_gatts_set_attr_value()`函数来实现,将MTU设置为所需的大小。 ```c esp_err_t esp_ble_gatts_set_attr_value(esp_gatt_if_t gatts_if, uint16_t handle, uint16_t length, const uint8_t *value); ``` 3. 在ESP32的BLE GATT服务器中,确保处理写入请求的函数能够接收大于20字节的数据。这通常涉及到修改`esp_ble_gatts_cb_param_t`结构体中的`write`字段的处理逻辑。 4. 在APP端,确保在发送数据之前发送MTU请求。这可以通过调用BLE库中的相应函数来实现,例如在Android的BluetoothGatt库中,可以使用`requestMtu()`方法。 5. 在APP端,确保在收到MTU响应后,使用新的MTU大小发送数据。这可能需要修改APP端的BLE库或API,以支持大于20字节的数据传输。 6. 使用BLE嗅探器(如nRF Connect或其他BLE分析工具)来监控数据传输过程,确保ESP32和APP之间的MTU协商成功,并且数据传输正确。 7. 如果问题仍然存在,检查ESP32的固件和APP端的BLE库是否为最新版本,以确保它们支持所需的功能。 通过以上步骤,您应该能够解决ESP32接收大于20字节数据的问题。如果问题仍然存在,请检查代码和配置,确保所有相关设置都已正确应用。 |
|
|
|
只有小组成员才能发言,加入小组>>
215个成员聚集在这个小组
加入小组537 浏览 1 评论
2306 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
459浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
242浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
257浏览 2评论
用AT+CIPSNTPCFG=1,8,\"cn.ntp.org.cn\",\"ntp.sjtu.edu.cn\"更新不了时间怎么处理?
675浏览 2评论
342浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-10 12:56 , Processed in 0.753998 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191