我正在尝试从Wemos D1 Mini(带有arduino框架的platformio ESP8266 )向Windows机器发送 udp数据包到Windows机器,在那里我必须更新3D对象。 Wemos正在打开一个soft access point,我将其连接到PC。
我每 10ms 达到一个数据包(假设我必须从传感器读取数据),但是会有明显的延迟(每100毫秒〜200毫秒 )(wireshark屏幕截图)。
我已经使用串行数据包而不是 udp 对其进行了测试,在那里我完全没有问题(每 10ms 一个数据包> ,由hterm捕获)。
我唯一的猜测是与软访问点相关的一些周期性服务,但是我不知道如何解决它。有帮助吗?
代码,使用<WiFiUdp.h>
和<ESP8266WiFi.h>
:
打开软访问点(在setup
中):
WiFi.softAP("martin_router_king", "i_have_a_stream");
发送数据(由loop
调用,其中udp_
的类型为WiFiUDP
,而length
的类型为3):
bool Sender::sendData(float *data, uint16_t length)
{
// Send data using udp
udp_.beginPacket(receiver_, port_);
for (uint16_t i = 0; i < length; ++i) {
udp_.print(':');
udp_.print(data[i]);
}
return udp_.endPacket();
}
修改 我已经测试过ESP是 wifi客户端(不再托管软访问点)了,并且它可以完美地运行。
WiFi.begin("ssid", "password");
因此“ 性能错误”必须由ESP8266使用的软访问点/网络堆栈引起。 确切的位置有什么想法(或向谁问这个问题)?