Такое впечатление, что [inline] client.flush();[/inline]
- Serial.println(Subj);
- client.print(Subj+"\r");
- client.flush();
- unsigned long timeout = millis();
- while (client.available() == 0)
тут не к месту
Такое впечатление, что [inline] client.flush();[/inline]
- Serial.println(Subj);
- client.print(Subj+"\r");
- client.flush();
- unsigned long timeout = millis();
- while (client.available() == 0)
Спасибо, вечером попробую.Такое впечатление, что client.flush();
тут не к месту
По крайней мере - проверить не хлопотноСпасибо, вечером попробую.
Т.е. client.flush() вставлять надо тогда, когда ты все получил и больше тебя ничего не интересует, т.е. практически перед client.stop()?
Все заработало, значит действительно, client.flash() - очистка непрочитанного буфера.По крайней мере - проверить не хлопотно
точнее - client.flushclient.flash()
Это не очистка! Это слив, просто в конкретном случае он не нужен. И, да, он не ждёт, а просто принудительно сливает. Конкретную реализацию надо смотреть уже в SDK esp.client.flash() - очистка непрочитанного буфера.
Я тоже не до конца понимаю смысл этой функции.Это не очистка! Это слив, просто в конкретном случае он не нужен. И, да, он не ждёт, а просто принудительно сливает. Конкретную реализацию надо смотреть уже в SDK esp.
Функция flush() на C/C++ - С++ для начинающих - Киберфорум
Я так понял, что при поступлении информации она хранится в буфере и может быть считана по командеПравильно, ли я предполагаю, что если flush() нет, то данные из буферов забираются принимающей стороной по мере её (принимающей стороны) технической готовности - по какому-то сигналу готовности.
А по команде flush данные из буфера принудительно отправляются на выходные (для буфера) цепи. Что, в случае технической неготовности принимающей стороны к приёму - аналогично уничтожению содержания буфера?
void flush() - финализирует выходное состояние, очищая все буферы вывода
WiFiServer server(80);
String Send(IPAddress ip, int port, String Subj)
{
WiFiClient client;
if (client.connect(ip, port))
{
client.flush();
client.print(Subj+"\r");
unsigned long timeout = millis();
while (client.available() == 0)
{
if (millis() - timeout > 5000)
{
Serial.println(">>> Client Timeout !");
client.stop();
return("");
}
}
while(client.available())
{
String line = client.readStringUntil('\r');
Serial.print(line);
return(line);
}
}
else {
Serial.println("connection failed");
return("");
}
}
ESP8266WebServer server(80);
Я вам в этой теме уже отвечал на этот вопрос, что отличия библиотек описаны:Отвечу себе сам. HTTP и TCP сервера одновременно вполне могут сосужествовать, только надо вешать их на разные порты
Код:ESP8266WebServer server(80); WiFiServer tcpserver(81);
С учетом ограничений от ESSPRESIFИнформация к размышлению.
Если домашняя сеть на eSP не связана с интернет, то зачем использовать роутер?
Более того, с роутером сеть может быть построена лишь вокруг роутера. т е нельзя удаляться от роутера далеко.
А если роутер кирдык, то и сеть кирдык. Да и установление связи с роутером -процесс не быстрый.
Есть ли принципиально другое решение на ESP без этих недостатков?
Есть!!! Протокол ESP-NOW и сеть на его основе.
• For ESP8266_NONOS_SDK_V2.1 and later versions, ESP-NOW supports sendingС учетом ограничений от ESSPRESIF
- Broadcast is not supported.
- Limited encrypted peers. 10 encrypted peers at the most are supported in Station mode; 6 at the most in SoftAP or SoftAP + Station mode. Multiple unencrypted peers are supported, however, their total number should be less than 20, including encrypted peers.
- Payload is limited to 250 bytes.
Нет, но Вы определитесь более четко. Ваша просьба не совсем понятна. Как минимум возникают два варианта, исходя из Вашей целевой задачи:Такое дело.Приобрёл два модуля ESP8266 12e.Есть возможность залить в них код.В итоге мне нужно соединить эти два модуля ,что бы один был точкой доступа ,второй клиентом.На клиенте кнопка, при нажатии которой на втором модуле моргнул светодиот на каком нибуть выходе.Может есть у кого готовое рещение?.