乐鑫技术交流
直播中

douyin8

13年用户 1184经验值
私信 关注
[问答]

在espconn_mesh_lflow_request_timeout后出现xxx mesh is busy的原因?

如下所示,在espconn_mesh_lflow_request_timeout后出现xxx mesh is busy,调用espconn_mesh_connect重连,还是会出现xxx mesh is busy,那正确的做法应该是怎么样呢?在重连后是不是有什么操作或者限制呢?mesh version: v1.3.3。

free heap:42528
free heap:42424
espconn_mesh_lflow_request_timeout
free heap:42392
pkt-idx:0, cidx:-1, usr:1, txing[0]:0
pkt-idx:1, cidx:-1, usr:1, txing[0]:0
pkt-idx:2, cidx:-1, usr:1, txing[0]:0
pkt-idx:3, cidx:-1, usr:1, txing[0]:0
pkt-idx:4, cidx:-1, usr:1, txing[0]:0
pkt-idx:5, cidx:-1, usr:1, txing[0]:0
bcast mesh is busy
bcastError:-1 //这是我自己打印出来的错误码,显示是mem问题
rip:2.255.255.1rp:7000, lp:25479
esp_mesh_demo_con_cb
espconn_mesh_lflow_request_timeout
pkt-idx:0, cidx:-1, usr:1, txing[0]:0
pkt-idx:1, cidx:-1, usr:1, txing[0]:0
pkt-idx:2, cidx:-1, usr:1, txing[0]:0
pkt-idx:3, cidx:-1, usr:1, txing[0]:0
pkt-idx:4, cidx:-1, usr:1, txing[0]:0
pkt-idx:5, cidx:-1, usr:1, txing[0]:0
topo mesh is busy
rip:2.255.255.1rp:7000, lp:25479
esp_mesh_demo_con_cb
                     

回帖(1)

chunhuahua

2024-7-11 16:21:21
在 ESP-MESH 网络中,出现 "xxx mesh is busy" 的原因可能是由于网络中的设备正在处理其他任务或请求,导致无法立即响应新的连接请求。以下是一些建议来解决这个问题:

1. **检查网络负载**:确保网络中的设备没有过载。如果网络负载过高,可能会导致设备无法及时处理新的连接请求。

2. **增加超时时间**:在调用 `espconn_mesh_connect` 时,可以尝试增加超时时间,以便给设备更多的时间来处理连接请求。

3. **检查设备状态**:在重连之前,确保设备已经从之前的连接中完全断开。可以使用 `espconn_mesh_disconnect` 函数来断开连接。

4. **限制重连次数**:为了避免频繁重连导致的网络拥塞,可以限制重连次数。例如,可以尝试重连 3 次,如果仍然失败,则暂停一段时间再尝试。

5. **优化代码逻辑**:检查代码逻辑,确保在调用 `espconn_mesh_connect` 之前,没有其他阻塞操作或长时间占用 CPU 的任务。

6. **更新 ESP-MESH 版本**:你提到的版本是 v1.3.3,可以尝试更新到最新版本的 ESP-MESH,以获取可能的性能改进和 bug 修复。

7. **监控内存使用情况**:从你提供的日志来看,内存使用情况在不断减少。请确保应用程序没有内存泄漏,并在必要时释放不再使用的内存。

8. **使用事件回调**:在 ESP-MESH 中,可以使用事件回调函数来处理连接请求的响应。这样,当设备准备好处理新的连接请求时,回调函数会被触发,从而避免 "xxx mesh is busy" 的问题。

总之,要解决 "xxx mesh is busy" 的问题,需要从多个方面进行优化和调整。希望这些建议能帮助你解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分