完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
当我的 MCU 尚未准备好读取传入的 TCP 数据时,我需要某种机制来限制它。使用 xon/xoff 是可能的,但可能并不理想。我希望找到替代解决方案。
大部分 AT 命令由一个请求和一个响应组成,该响应具有隐式流控制,因为您可以在准备就绪时发送下一个请求。例外情况是 IPD 数据包,当您有打开的连接时,它可以随时发送。在TCP的情况下,如果远程端发送数据,无论设备是否想要限制连接,它都会继续接收IPD数据包。如果设备的缓冲区溢出,则 TCP 数据将丢失。 作为允许流量控制和防止溢出的一种方式,我想知道以下任何一种是否可行: - 添加一个新命令来设置可以接收的最大 IPD 数据量,以及一个命令来指示设备已准备好接收更多数据,这是否可行? - 或者,在一种模式下,从不发送IPD数据,而是设备发出一个新命令以从设备读取数据,该怎么办 实施这些解决方案中的任何一种似乎都合理吗?如果制作了工作版本,是否可以得到官方支持?最后,对于我如何尝试进行此更改,您有什么建议吗?我看到 ESP8266 SDK 中有一个 AT 示例 (ESP8266_NONOS_SDKexamplesat)。这是ESP8266 AT命令固件的来源吗?这是正确的起点吗?提前感谢您的帮助。 |
|
相关推荐
1个回答
|
|
ESP8266是一款非常流行的Wi-Fi模块,它具有许多功能,但默认情况下并不支持流量控制。然而,您可以尝试以下几种方法来限制IPD数据:
1. **增加缓冲区大小**:通过增加ESP8266的缓冲区大小,您可以减少因缓冲区溢出而导致的数据丢失。这可以通过修改固件或使用具有更大缓冲区的库来实现。 2. **使用非阻塞读取**:使用非阻塞读取方法可以让您的MCU在处理数据时更加灵活。这样,您可以在准备好处理数据时再从缓冲区读取数据,而不是在数据到达时立即处理。 3. **实现应用层流量控制**:虽然ESP8266不支持XON/XOFF,但您可以在应用层实现类似的流量控制机制。例如,您可以在接收到一定量的数据后发送一个特定的命令或信号给发送方,告诉它暂停发送数据,直到您准备好接收更多数据。 4. **使用心跳机制**:通过实现心跳机制,您可以定期检查连接状态并确保数据传输的稳定性。在心跳包中,您可以包含一些关于当前缓冲区状态的信息,以便发送方可以根据需要调整发送速率。 5. **使用第三方库**:有些第三方库可能提供了流量控制功能,您可以尝试查找并使用这些库来实现所需的功能。 6. **升级硬件**:如果以上方法都不能满足您的需求,您可以考虑升级到具有更好流量控制功能的硬件,例如ESP32。 请注意,这些方法可能需要您对ESP8266的固件或软件进行一些修改,以实现所需的功能。在实施这些解决方案时,请确保充分测试以确保它们在您的特定应用中有效。 |
|
|
|
只有小组成员才能发言,加入小组>>
191个成员聚集在这个小组
加入小组470 浏览 1 评论
1646 浏览 2 评论
642浏览 6评论
536浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
515浏览 5评论
517浏览 4评论
507浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-23 10:04 , Processed in 0.683243 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191