完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有 2 个 esp-01 模块。其中一个运行STAtiONAP模式,并充当运行在STATION模式的另一个esp模块的tcp服务器。数据传输工作正常,但回调函数未正确执行。
法典: void ICACHE_FLASH_ATTR tcp_connect_sap_cb(void *arg){ 结构体 espconn *conn_sap = (结构体 espconn *)arg;这没有被执行 espconn_regist_recvcb(conn_sap、recv_sap_cb);正在工作 send_msg("'connect cb' SAP TCP CONNECTEDn"); // THIS IS NOT BEING EXECUTED } 本地空隙 ICACHE_FLASH_ATTR tcp_init_sap(){ tcp_proto_sap.local_port = 2233; tcp_conn_sap.类型=ESPCONN_TCP; tcp_conn_sap.状态 = ESPCONN_NONE; tcp_conn_sap.proto.tcp = &tcp_proto_sap; espconn_regist_connectcb(&tcp_conn_sap, tcp_connect_sap_cb); sint8 sap_conn_accept = espconn_accept(&tcp_conn_sap); if(sap_conn_accept != 0){ os_printf("SAP TCP CONN ACCEPT ERROR: %dn",sap_conn_accept); }else{ os_printf("SAP TCP DONE"); } sint8 max_conn = espconn_tcp_set_max_con_allow(&tcp_conn_sap,5); if(max_conn != 0){ os_printf("Set max conn error: %dn",max_conn); } espconn_regist_time(&tcp_conn_sap,7200,0); } void user_init(void){ uart_init(BIT_RATE_19200、BIT_RATE_19200); wifi_init(); espconn_init(); } 接收回调已注册,但未执行os_printf语句。 |
|
相关推荐
1个回答
|
|
从您提供的代码片段来看,您正在尝试在ESP-01模块上实现TCP服务器和客户端之间的通信。您提到回调函数没有被执行,这可能是由于以下原因之一:
1. **回调函数注册问题**:确保您在初始化ESP-01模块时正确注册了回调函数。在您的代码中,您需要在调用`espconn_regist_connectcb`时传递`tcp_connect_sap_cb`函数。 2. **回调函数定义问题**:检查您的回调函数定义是否正确。确保函数签名与ESP-01模块期望的签名相匹配。例如,对于连接回调函数,它应该是这样的: ```c void ICACHE_FLASH_ATTR tcp_connect_sap_cb(void *arg); ``` 3. **回调函数调用问题**:确保在回调函数中正确调用了其他函数。例如,您在回调函数中调用了`espconn_regist_recvcb`,但您需要确保在回调函数之外也正确注册了接收回调函数。 4. **ESP-01模块配置问题**:检查您的ESP-01模块是否正确配置为STATIONAP模式,并确保另一个模块配置为STATION模式。同时,确保两个模块的IP地址、子网掩码和网关设置正确。 5. **代码逻辑问题**:检查您的代码逻辑,确保在连接建立后正确调用了回调函数。例如,您可以在连接建立后立即调用`tcp_connect_sap_cb`函数,以确保回调函数被执行。 6. **调试和日志记录**:在您的代码中添加更多的调试信息和日志记录,以帮助您确定问题所在。例如,您可以在回调函数的开始和结束处添加日志记录,以检查回调函数是否被调用。 7. **固件版本问题**:确保您使用的ESP-01模块固件版本与您的代码兼容。如果固件版本不兼容,可能会导致回调函数无法正确执行。 8. **硬件问题**:检查您的ESP-01模块硬件连接是否正确,确保模块之间的通信没有问题。如果硬件连接有问题,可能会导致回调函数无法正确执行。 综上所述,您需要仔细检查您的代码和硬件设置,以确定回调函数未被执行的原因。通过添加调试信息和日志记录,您将更容易找到问题所在并解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
486 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 21:48 , Processed in 0.646768 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号