大家好,我使用esp32-s2运行udp_server这个例程监听一个端口并接收数据,主机端是pc进行100hz的udp发送,包长度296,路由器距离esp32-s2足够近,rssi在-45到-50之间,能够排除路由器和主机发送的问题。
期望的运行结果:esp32-s2以10-30ms(考虑丢包情况)的间隔接收到udp包。
实际运行结果:大部分情况下按照期望运行结果运行,但是不时会出现突发延迟的情况,即例如出现udp接收阻塞200ms后同时接收到15-20个包,这个阻塞延迟时间在100-800ms之间不定。
问题分析:怀疑是例程的设置问题,因为阻塞200ms的阶段udp包实际并没有丢失,依然被esp32接收并放到缓冲区中,只是recvfrom函数似乎没有一接收到数据就立即从缓冲区读出,而是等到缓冲区积累了一定数量后才一次性把15-20个包同时读出来。
请教论坛大佬以及官方技术大神是否有解决思路,谢谢!
udp接收延迟后多个包同时到达
Re: udp接收延迟后多个包同时到达
你试试把 WIFI AMPDU 功能关了试试呢。idf.py menuconfig-> Component config->Wi-Fi->[]WiFi AMPDU RX
Re: udp接收延迟后多个包同时到达
关闭WiFi AMPDU RX之后问题无改善,反而出现延迟更明显的情况,未关闭前偶发延迟再80-150ms之间,关闭之后会到400+ms
Re: udp接收延迟后多个包同时到达
可以贴一下代码吗?你说的阻塞 200ms 是你在应用层主动 delay 了 200 ms 后再去调用 recvform 函数去收 UDP 包?
Who is online
Users browsing this forum: No registered users and 99 guests