espconn_sent函数无法连续发送
这个是UDP收发包注册,回调函数如下:
void ICACHE_FLASH_ATTRuser_devicefind_init(void)
{
ptrespconn.type = ESPCONN_UDP;
ptrespconn.proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp));
ptrespconn.proto.udp->local_port = 1025;
espconn_regist_recvcb(&ptrespconn, user_devicefind_recv);
espconn_accept(&ptrespconn);
}
但是无法连续发送多个包,导致死机了,解决无法连续发包的问题如下:
有一个 sent cb
espconn_regist_sentcb
注册一个sent cb
当前包发完后 会调用 sent cb
之后再发下一包
但是问题又来了:命令解析里面,只要想芯片发送命令,都忽略了其他命令,都跑到这个固定发包命令里面
,原因是:espconn_regist_sentcb(&ptrespconn, my_esp_platform_sent_cb);
就是这个:espconn_regist_sentcb函数,绑定了my_esp_platform_sent_cb函数,导致每次收到命令,都跑到
这个绑定的函数执行了。
解决办法是:
重新绑定回原来的回调函数,原来的回调函数是保证首发报正常的回调函数,如下
espconn_regist_sentcb(&ptrespconn, user_esp_platform_sent_cb);
绑定回它:user_esp_platform_sent_cb); 就可以了