Я пытаюсь отправить пакеты udp с Wemos D1 Mini ( ESP8266 , platformio с платформой arduino) на компьютер с Windows, где мне нужно обновить 3D-объект.Wemos открывает программную точку доступа , к которой я подключаюсь к своему компьютеру.
Я получаю ~ один пакет каждые 10 мс (учитывая, что мне нужно прочитать данные с датчика), однако есть заметная задержка ( ~ 200 мс ) каждые 100 мс (снимок экрана).
![Delay every 100ms = ~ every 18 packets](https://i.stack.imgur.com/58PZR.png)
Я протестировал его с использованием последовательные пакеты вместо udp , где у меня нет абсолютно никаких проблем (один пакет каждые 10 мс , захваченный с помощью 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, являющимся клиентом Wi-Fi (больше не размещающим программную точку доступа), и он работает безупречно .
WiFi.begin("ssid", "password");
Таким образом, « ошибка производительности » должна быть вызвана программной точкой доступа / сетевым стеком, который используется ESP8266.Любые идеи , где точно (или кого спросить об этой проблеме)?