乐鑫技术交流
直播中

剪刀脚

8年用户 871经验值
私信 关注
[问答]

RTOS SDK 1.4.0 espconn_tcp_set_max_con_allow导致代码崩溃了怎么解决?

静态结构体 espconn conn;
conn.type = ESPCONN_TCP;
康涅狄格州 = ESPCONN_NONE;
conn.proto.tcp = (esp_tcp *)zalloc(sizeof(esp_tcp));
conn.proto.tcp->local_port = port;
espconn_regist_connectcb(&conn, onNewClient);
espconn_accept(&conn);
espconn_tcp_set_max_con_allow(&conn, 2);
espconn_regist_time(&conn, CLIENT_TIMEOUT_S, 0);

If I remove the "espconn_tcp_set_max_con_allow" it does not.

我正在使用 RTOS SDK v1.4.0。
                                                                                                                                                         

回帖(1)

以下是一些可能的解决方案:

1. **确保ESP8266固件版本与RTOS SDK版本兼容**:请检查您的ESP8266固件版本是否与RTOS SDK 1.4.0兼容。如果不兼容,您可能需要升级或降级固件。

2. **检查内存分配**:在您的代码中,您使用了`zalloc`函数为`esp_tcp`结构体分配内存。请确保`zalloc`函数正确地为结构体分配了内存,并且没有内存泄漏。

3. **检查端口号**:请确保您为`local_port`分配的端口号是有效的。通常,端口号应该在1024到65535之间。

4. **检查回调函数**:请确保`onNewClient`回调函数正确实现,并且没有导致崩溃的错误。

5. **检查`espconn_tcp_set_max_con_allow`函数的使用**:请确保您在调用`espconn_tcp_set_max_con_allow`函数之前已经正确初始化了`conn`结构体。此外,您可以尝试将`espconn_tcp_set_max_con_allow`函数的调用移到其他位置,看看是否仍然导致崩溃。

6. **使用调试工具**:您可以使用调试工具(如GDB)来查找崩溃的原因。这可以帮助您确定是哪个函数或代码行导致的问题。

7. **查看错误日志**:请检查您的系统日志,看看是否有任何与崩溃相关的错误信息。这可以帮助您确定问题所在。

8. **尝试简化代码**:您可以尝试逐步简化您的代码,只保留最基本的功能,然后逐步添加其他功能,以确定是哪个部分导致的问题。

9. **查看RTOS SDK文档**:请查阅RTOS SDK的文档,看看是否有关于`espconn_tcp_set_max_con_allow`函数的特定要求或限制。


举报

更多回帖

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