完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在搜索任何相关信息失败后,我需要寻求一些提示如何使 ESP 运行 TCP 服务器(从 espconn_regist_connectcb 开始)能够实现低功耗/睡眠模式。
如果我有一个无限循环,我知道如何让 ESP 进入睡眠状态,使用 wifi_fpm_do_sleep,但是我该如何使用 TCP 服务器呢?我没有任何循环可以放这个。 我想到的唯一想法是在请求处理结束时让 ESP 进入休眠状态,即像这样: 代码:全选// set up callback somewhere espconn_regist_disconcb(pespconn, shell_tcp_disconcb); LOCAL void ICACHE_FLASH_ATTR shell_tcp_disconcb(void *arg) { struct espconn *pespconn = (struct espconn *) arg; os_printf("tcp connection disconnected\n"); // go to sleep mode here for some time } 但是如果没有请求,我该如何恢复睡眠呢?我想我可以改为使用一些全局状态变量,并且在 main() 中只会有一个带有睡眠处理的虚拟循环——断开连接处理程序会将其设置为“你现在可以睡觉了”,而连接打开的处理程序将禁止睡眠. 但这是一个好的解决方案吗?库中不是已经有一些内置的方法了吗?我希望我正在尝试用这个发明一个轮子...... 感谢您的任何回复。 |
|
相关推荐
1个回答
|
|
实现低功耗/睡眠模式的关键是找到合适的时间将 ESP 进入睡眠状态。在 TCP 服务器中,您可以在以下几个地方实现:
1. 在处理请求结束后,使用 wifi_fpm_do_sleep 让 ESP 进入睡眠状态。这可以减少发送和接收数据的时间,从而降低功耗。 2. 使用ESP8266的 wifi_fpm_set_sleep_type 函数将 ESP 设置为自动睡眠模式。在这种模式下,ESP会根据设定的条件自动进入睡眠状态,并在需要时自动唤醒。您可以使用 wifi_fpm_set_sleep_type 设置您想要的超时值。 3. 在循环中添加wifi_fpm_do_sleep函数,这样可以使 ESP 在等待接受请求时进入睡眠状态,节省能量。 需要注意的是,您需要确定 ESP 进入睡眠状态的时间,以避免睡眠时间过长,造成请求超时或丢失。您还需要在 ESP 进入睡眠状态前正确保存和恢复所有状态和数据。 |
|
|
|
只有小组成员才能发言,加入小组>>
733 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
444浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 08:25 , Processed in 0.811929 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号