ESP8266 мягкая точка доступа периодического обслуживания? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь отправить пакеты udp с Wemos D1 Mini ( ESP8266 , platformio с платформой arduino) на компьютер с Windows, где мне нужно обновить 3D-объект.Wemos открывает программную точку доступа , к которой я подключаюсь к своему компьютеру.

Я получаю ~ один пакет каждые 10 мс (учитывая, что мне нужно прочитать данные с датчика), однако есть заметная задержка ( ~ 200 мс ) каждые 100 мс (снимок экрана).

Delay every 100ms = ~ every 18 packets

Я протестировал его с использованием последовательные пакеты вместо 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.Любые идеи , где точно (или кого спросить об этой проблеме)?

...