完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们使用ESP32的一个设备,最近测试中发现一个问题,偶尔会出现PC端TCP已经回应了数据,但ESP32端不能立刻收到,需要延迟一段时间才能收到,有时会延迟2-3秒,对设备的反应时间有较大的影响。
详细的情况如下: 1,ESP32 -- WiFi AP -- switch -- PC 2,ESP32的sdk为esp-idf v2.1.2,作为客户端建立了一个TCP连接,连接着PC的一个服务器程序(使用的mbedtls); 3,ESP32的设备在外部触发时,会给PC发送一包数据并等待PC的回应。 4,现在的问题是,偶尔会出现ESP32得到的回应特别慢(正常情况延迟40-100ms,但异常时可能会延迟1-4s) 5,为了进一步确定问题,我们做了抓包,进行分析:在PC端运行WireShark进行抓包,问题出现时得到的现象如下: 情况1: a PC端是立刻进行回复了,耗时小于40ms b ESP32端,延迟1s左右收到回应包(通过select监测socket是否可读,并在可读时打印时间点,发现距离发送耗时1s) 清空2: a PC端是立刻进行回复了,耗时小于40ms b ESP32端,延迟1s多收到回应包(通过select监测socket是否可读,并在可读时打印时间点,发现距离发送耗时1s),同时wireshark中出现多次TCP retransmission |
|
相关推荐
1个回答
|
|
这个问题可能是由多种原因导致的,以下是一些建议和可能的原因:
1. 网络延迟:网络环境可能导致数据传输延迟。请检查您的网络环境,确保WiFi信号强度和稳定性。 2. 缓冲区溢出:ESP32的TCP接收缓冲区可能已满,导致无法及时接收数据。请检查您的代码,确保正确处理接收到的数据,并及时释放缓冲区。 3. 任务调度:ESP32可能在处理其他任务,导致TCP接收任务被阻塞。请检查您的任务调度策略,确保TCP接收任务能够及时执行。 4. 重传机制:TCP协议具有重传机制,如果数据包丢失,会重新发送。这可能导致数据接收延迟。请检查您的网络环境,确保数据包传输的可靠性。 5. 软件版本问题:您使用的esp-idf版本为v2.1.2,可能存在一些已知或未知的问题。建议您尝试升级到最新版本的esp-idf,看看问题是否得到解决。 6. 代码优化:检查您的代码,确保TCP连接的建立、数据发送和接收等操作都是高效的。避免在关键路径上使用阻塞操作,以减少延迟。 7. 硬件问题:虽然不太可能,但硬件问题也可能导致数据接收延迟。请检查您的ESP32设备,确保其工作正常。 8. 调试和日志:在您的代码中添加调试信息和日志记录,以便更好地了解问题发生的原因和时机。 综上所述,要解决这个问题,您需要从多个方面进行排查和优化。希望这些建议对您有所帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
172个成员聚集在这个小组
加入小组430 浏览 1 评论
1293 浏览 1 评论
598浏览 6评论
495浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
481浏览 5评论
476浏览 4评论
462浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 23:29 , Processed in 0.877929 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号