#arduino #esp8266
#arduino #esp8266
Вопрос:
Я работаю с esp8266 Arduino (через Adafruit Feather Huzzah) Я пытаюсь непрерывно записывать 3 символа в сокет TCP, но в этом нет ничего непрерывного. Он имеет очень регулярную схему высокой и низкой пропускной способности. Он записывает с очень высокой скоростью в течение ~ 10 секунд, а затем с очень низкой скоростью в течение 4 секунд (см. График полученных пакетов)
//...
void loop() {
if (!client.connect(host, port)) {
delay(10);
return;
}
for (int i=0; i < 1024; i ){
client.print(String(analogRead(A0)) "rn");
delay(1);
}
}
Количество полученных сообщений (прошивка версии 2.2.0 и 2.3.0)
Есть идеи, если это драйвер Wi-Fi, что-то в чипе или аппаратных таймерах, которые я не могу обойти … или, может быть, что-то еще?
— Обновить —
Я протестировал это с помощью master, и он получил другой, но все же быстрый результат. Похоже, что теперь он «догоняет», вместо того, чтобы замедляться, но он все еще работает по схеме ~ 10s / ~ 4s. Что может быть причиной этого? Каковы варианты смягчения?
Комментарии:
1. Какую версию ядра ESP8266 Arduino вы используете?
2. Можете ли вы использовать новейший git? Вскоре после этого выпуска была выполнена большая перезапись, которая исправила множество проблем с пропускной способностью WiFiClient
3. Да! Спасибо. Я попробую это и отчитаюсь. Спасибо
4. Я сделал. Спасибо! Аналогичная, но менее серьезная проблема. См. Обновленный вопрос.
Ответ №1:
Я знаю, что это неправильный ответ, но это может быть связано с алгоритмом Нейгла, который выполняется по умолчанию на espduino. Попробуйте отключить его с помощью client.setNoDelay(false)
метода. Кроме того, если вы опубликуете свой код, другие люди (например, я) смогут его протестировать!!