为什么ESP8266 TCP透传过程会丢包?8266流控原理以及如何设置

1.为什么ESP8266 TCP透传过程会丢包?

因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。透传功能使用的是 TCP 协议,每包数据是 1460 (取决于协议栈),只要网络良好,buffer 空间没有被消耗完,就可以不停地传输数据。对于透传,串口接收数据间隔超过约 20 ms,就会认为数据接收结束,将已经接受的数据传输到网络。如果网络不好,就可能会丢弃一些数据,因此,为避免这种情况,可以将串口设置为流控模式。

2.8266流控原理

这里写图片描述

A和C之间可能只是因为距离远,无法收到对方的无线电波。从A的角度来看,C属于隐藏节点。如果使用简单的transmit-and-pray 协议,A与C有可能在同一时间传送数据,这会造成节点B无法辨识任何信息。此外,A与C将无从得知错误发生,因为只有节点B才知道有冲突发生。在无线网络中,由隐藏节点所导致的碰撞问题相当难以监听,因为无线收发器通常是半双工工作模式,即无法同时收发数据。为了防止碰撞发生,802.11 允许工作站使用请求发送(RTS)和允许发送(CTS)帧来清空传送区域。由于RTS 与CTS 帧会延长数据交易过程,因此RTS帧、CTS 帧、数据帧以及最后的应答帧均被视为相同基本连接的一部分。(通俗地说,就是存在AC同时访问中间的B,B无法正确接收他们的信息。所以就多了个请求和允许,让B决定谁先说话,然后就没有冲突了)

RTS/CTS机制的使用是可选的,每个802.11节点必须实现该功能。通过RTS/CTS机制,明确预留信道。其原理如下:

n 发送者发送RTS(请求发送),包括接收者地址,发送数据帧时间,发送ACK时间。
n 接收者用CTS回应,CTS为发送者预留带宽同时通告所有站点(包括隐藏的)保持静默。
n 由于RTS和CTS长度很短,其本身冲突的概率减少,因此RTS/CTS机制可以有效运行。
这里写图片描述

3.如何设置8266流控

这里写图片描述

如果不是AT指令的自己找手册,上面应该有写

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值