完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我最近得到了一些 Wemos D1 R2 ESP8266 板并使用 Arduino IDE 对它们进行编程。我想给他们发送一些控制指令,然后让他们做一些事情。在尝试使用 UDP proctoll 完成后,我发现有些数据包时不时会丢失,所以我切换到 TCP 协议,这显然带来了自己的挑战。
我目前正在使用一些 TCP 套接字测试工具来建立与 ESP8266 的连接并向其发送命令。问题是,ESP 似乎有严重的时间问题。 1) 让我们从 Ping 响应开始。每当我在 Windows 中启动命令行并 ping ESP 时,前几个 ping 的响应时间在 20 到 100 多毫秒之间,仅从第四个开始,每个 ping 响应只需要 1 或 2,偶尔 3 毫秒,这完全是美好的。但每次我中断 ping,等待几秒钟并开始新的 ping 程序时,我一开始都会遇到这些高 ping 时间。只有在前三个之后,ping 时间才低。这是完全可重现的。这里发生了什么?这有关系吗?ESP 在不响应 ping 时一直在做什么? 2) 第一个 TCP 连接需要……永远。准确地说:大约 3 秒。每当我重新启动 ESP 并等待 TCP 服务器准备就绪(这不会超过半秒)然后尝试连接到它时,第一个连接建立需要 3 秒。每个进一步的连接大约需要 10 到 100 毫秒(我认为这还是有点慢?!)。我让 ESP 在启动和第一个 TCP 连接之间运行多长时间都没有关系。我什至尝试用不同的计算机发送。第一次连接需要很长时间。这是正常的吗?Wireshark 告诉我,正在发生重传(这需要大部分时间) 3) TCP 数据包得到确认的时间也太长了。我建立了一个连接,向 ESP 发送了一个空的 TCP 数据包,并观察了 Wireshark 中的 ESP 的确认。我得到这样的值:270ms、234ms、243ms、118ms、249ms、189ms、292ms、145ms、59ms、253ms、135ms、203ms、297ms。这不是完全不能接受吗?我注意到,当我放置一些代码行来接收 tcp 数据包并通过 loop() 函数中的串行控制台给我一条消息时,当我发送数据包时,消息几乎立即显示出来。这是什么意思?ESP 是否收到数据包但延迟发送 ACK?如何在这样的时序下实现高数据速率和低延迟通信? 4)UDP丢包。为什么 ESP 时不时会丢失我的 UDP 数据包?显然它与电源有关,因为当我将外部电源插入电路板时,丢包问题会好转,但有时甚至会丢失数据包。即使我每秒发送不超过 1 个数据包。ESP 不应该能够每秒接收数百个包吗? 为什么ESP的性能看起来如此糟糕? 我看过有人使用 Websockets(TCP 连接!)从 ESP 接收大量数据包的视频,这意味着单个数据包在 <5 毫秒内传输,所以我认为这一定是可能的。我还能检查什么?我的下一步是在 ESP 和我的计算机之间创建乒乓通信,测量往返时间和数据包吞吐量,并将其与我网络中的其他计算机进行比较。 代码:全选#include #include const char* ssid = "WLAN"; const char* password = "test"; const int serverport = 4210; WiFiServer server(serverport); void setup() { Serial.begin(115200); Serial.println(); Serial.printf("Connecting to %s ", ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); Serial.printf("Server started at port %dn", serverport); } void loop() { // Here can be code or not. Doesn't matter. Timings are bad either way. } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1140 浏览 1 评论
576浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
462浏览 4评论
437浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:18 , Processed in 0.908308 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号