Ответ с помощью HTML-страницы на сервере HTTP с использованием esp01 и ArduinoIDE

Теперь существует много способов ответить содержимым веб-страницы пользователю, который обращается к веб-серверу, Но не забывайте использовать как можно меньше места, Я пробовал что-то новое, так как у меня не было ошибки компиляции, я немного сбит с толку относительно того, что может быть ошибкой,

в void data () я сохраняю HTML-страницу и сохраняю ее в ПЗУ,

void data()
{
  if(SPIFFS.exists("/login.html"))
  {
    Serial.println();
  }
  else{
    SPIFFS.begin();
    File f=SPIFFS.open("/login.html","w");
    String s="<html><head><title>AP</title><h1>Welcome to AP page</h1>\n";
    s+="</head><body><form name=\"/myform\" action=\"/login\" method=\"POST\">\n";
    s+="<input type=\"text\" name=\"username\" placeholder=\"username\"><br/>\n";
    s+="<input type=\"password\" name=\"password\" placeholder=\"password\"><br/>\n";
    s+="<input type=\"submit\" value=\"login\"></form></body></html>";
    f.println(s);
    f.close();
  }

}

Пожалуйста, исправьте приведенные выше строки, если я написал это неправильно, после этого, Я написал несколько строк в void setup()

WiFi.mode(WIFI_AP_STA);// Только точка доступа
  WiFi.softAP(ssid, password);  // Запуск точки доступа удаление пароля отключит безопасность

  IPAddress myIP = WiFi.softAPIP(); //Получить IP-адрес
  Serial.print("HotSpt IP:");
  Serial.println(myIP);

  server.on("/", HTTP_GET, handleRoot);      //Какую процедуру обрабатывать в корневом каталоге
  server.on("/",HTTP_POST,handlelogin);
  server.onNotFound(handleerror);

  server.begin();   

Теперь я вызываю void handleRoot() Я хочу отправить страницу, которую я написал и сохранил в /login.html досье.

так что для этого,

void handleRoot()
  {
    SPIFFS.begin();
    File f=SPIFFS.open("/login.html","r");
    server.send(200, "text/html",f.readStringUntil('EOF'));
  }

Теперь, как только я делаю это, выполняю и загружаю программу в ESP01, она мне ничего не показывает, Я также пробовал отправлять (String)f, все остальное, что я пишу, выдает мне ошибку, Это нормально компилируется, но когда я подключаюсь к точке доступа и открываю 192.168.4.1 в браузере, я ничего не вижу, Но когда я написал server.send(200,"text/ html",(String)f) Я получал 0, любая идея о том, какую ошибку я совершаю.

, 👍1

Обсуждение

Чего вы надеетесь достичь, если одна часть вашей программы сохранит файл статических данных в SPIFFS, а затем другая часть прочитает этот файл и отправит его?, @Majenko

Если я не отформатирую устройство, я могу удалить бит, в котором я добавляю эти строки, чтобы сохранить HTML-файл. Например, удалить блок этого кода позже., @Wan Street

Почему бы не использовать инструменты SPIFFS IDE для создания образа SPIFFS с уже имеющимся в нем файлом?, @Majenko

Что я делаю не так? Могу ли я отправить такой ответ? Или мне нужно снова написать полный HTML-код, @Wan Street

Я подозреваю, что это `EOF", который вы читаете до сих пор. Это означает поиск буквы "Е", а не конца файла., @Majenko

Вы должны использовать server.StreamFile("text / html", f);, @Majenko

Хорошо, но проблема в том, что сегодня "конец офиса". Спасибо за информацию, я должен обновить ее завтра. Извините, @Wan Street

@WanStreet, ты видел этот пример https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino?, @Juraj

Я сейчас ... я буду, @Wan Street

Я прокомментировал дальше в качестве ответа, мне нужно было опубликовать изображение, я все еще не пробовал использовать server.StreamFile() ... буду работать над этим через минуту., @Wan Street

Похоже, вы никогда не вызывали data()., @esoterik

хммм .. хорошо .. похоже на то .. не могли бы вы, пожалуйста, сказать мне, куда вызвать data(), извините, я не могу следовать.., @Wan Street


1 ответ


1

Небольшое обновление, я использовал тот же код для ESP8266 NodeMCU.

Извините, если я отправляю это сообщение с неправильным номером устройства. Но я попробовал тот же код и загрузил его в ESP8266, это сработало, и я получаю веб-страницу AP, на которой я сохраняю и отправляю файл. Я опубликую это в качестве ответа, так как мне нужно опубликовать изображение.

Это страница, которую я получаю при использовании HTML, который я написал:

Webpage

Итак, это произошло. Я в замешательстве относительно того, почему это не сработало с ESP01, плюс мне приходится загружать код каждый раз, когда я подключаю ESP01.

,

неправильный размер spiffs или spiffs не инициализированы на первом устройстве?, @Juraj

значение инициализации spiffs? как spiffs.begin() ?, @Wan Street

загрузить или отформатировать() http://esp8266.github.io/Arduino/versions/2.0.0/doc/filesystem.html, @Juraj

ну ладно.. Я должен буду проверить завтра.., @Wan Street