Arduino UNO WiFi - проблема с выводом веб-страницы

Тема в разделе "Arduino & Shields", создана пользователем DANILAP, 8 май 2017.

  1. DANILAP

    DANILAP Нуб

    Добрый день, коллеги!

    Приобрел плату Arduino UNO WiFi http://amperka.ru/product/arduino-uno-wifi выполнил все по инструкции http://wiki.amperka.ru/продукты:arduino-uno-wifi - все работает отлично, веб-сервер (http://wiki.amperka.ru/продукты:arduino-uno-wifi#примеры_использования) запустился, страничка с параметрами выдается и рефрешится. В хедерах пришлось задать кодировку utf-8 чтобы кириллица корректно отображалась.

    Решил немного поэкспериментировать с видом самой веб-страницы, добавил кнопки,
    немного поигрался с разметкой веб-страницы, но столкнулся с проблемой. Веб-страница в браузер отдается не полностью (html код грузится не полностью, на каком-то этапе обрывается, другими словами код страницы загружается в браузер частично), из-за чего верстка страницы разваливается.

    В связи с этим возник вопрос. Правильно я понимаю, что со стороны ардуино есть ограничение на размер отправляемого веб-клиенту документа? Или я не прав? Как можно снять это ограничение и с чем оно связано? Благодарю всех за помощь и ответы.
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Cкетч?
     
  3. DANILAP

    DANILAP Нуб

  4. NikitOS

    NikitOS Король шутов Администратор

    а где ваш
     
  5. NikitOS

    NikitOS Король шутов Администратор

  6. DANILAP

    DANILAP Нуб

    Сорри.
    Код (C++):
    /*
    Пример простого web-сервера, работающего на Arduino Uno WiFi.
    Сервер показывает значения на аналоговых входах и обновляет информацию каждые две секунды.
    Обратитесь к серверу по адресу http://<IP>/arduino/webserver/
    Обратите внимание: пример работает только с Arduino Uno WiFi Developer Edition.
    */

    #include <Wire.h>
    #include <Multiservo.h>
    #include <UnoWiFiDevEd.h>
    Multiservo servo1;
    Multiservo servo2;
    int pos1 = 0;
    int pos2 = 0;
    void setup() {
    Wire.begin();
    servo1.attach(12);
    servo2.attach(17);
    servo1.write(pos1);
    servo2.write(pos2);
     
    Wifi.begin();
    Wifi.println("Web Server is up!!!"); // Выводим сообщение о старте сервера в wifi-консоль
    }
    void loop() {
    while(Wifi.available()){
    process(Wifi);
    }
    delay(50);
    }
    void process(WifiData client) {
    String command = client.readStringUntil('/');
    if(command == "web")
       {
         //WebServer(client);
         WebServerS(client);
      }
    else if(command == "servo1")
       {
        pos1=pos1+10;
        servo1.write(pos1);
        WebServer1(client);
       }
    else if(command == "servo2")
       {
         pos2=pos2+10;
         servo2.write(pos2);
         WebServer2(client);
       }
    }
    void WebServer1(WifiData client) {
      client.println("servo1");
    }
    void WebServer2(WifiData client) {
      client.println("servo2");
    }
    void WebServerS(WifiData client) {
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html; charset=utf-8");
    client.println("Connection: close");
    client.println();
    client.println("<html>"); // Формируем страницу
    client.println("<head> <title>-</title> </head>");
    client.println("<button type=\"button\" onclick=\"servo1()\">servo1</button>");
    client.println("<button type=\"button\" onclick=\"servo2()\">servo2</button>");
    client.println("<button type=\"button\" onclick=\"servo3()\">servo1</button>");
    client.println("<button type=\"button\" onclick=\"servo4()\">servo2</button>");
    client.println("<script>");
    client.println("function servo1() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo1/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo2/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo3/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo4/\", true);xhttp.send();}");
    client.println("</script>");
    client.println("</body></html>");
    }
     
  7. NikitOS

    NikitOS Король шутов Администратор

    HTML:
    client.println("</body></html>");
    ------------
     
  8. NikitOS

    NikitOS Король шутов Администратор

    где открывается body
     
  9. DANILAP

    DANILAP Нуб

  10. DANILAP

    DANILAP Нуб

    нигде
     
  11. DANILAP

    DANILAP Нуб

    дело не в этом, что боди не открывается, даже если добавлю body страница в браузер загружается вот так:
    Код (C++):
    <head> <title>-</title> </head>
    <button type="button" onclick="servo1()">servo1</button>");
    <button type="
    button" onclick="servo2()">servo2</button>");
    <button type="button" onclick="servo3()">servo1</button>");
    <button type="
    button" onclick="servo4()">servo2</button>");
    <script>
    function servo1() {var xhttp = new XMLHttpRequest();xhttp.open("GET", "/arduino/servo1/", true);xhttp.send();}");
    function servo2() {var xhttp = new XMLHttpReque
     
  12. NikitOS

    NikitOS Король шутов Администратор

    но body все же надо
     
  13. DANILAP

    DANILAP Нуб

    Это я с Вами согласен, но проблема в том, что весь документ полностью не отдает. Пробовал Document Length в хедере ставить - проблема не решается, грузится страница дольше, но все равно на половине кода обрывается. Может где какие настройки размера документа или длины пакета выставить нужно?
     
  14. NikitOS

    NikitOS Король шутов Администратор

    Код (C++):
    client.println("function servo1() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo1/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo2/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo3/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo4/\", true);xhttp.send();}");
    присмотритесь!у вас серво 2 стоит 3 РАЗА
     
  15. DANILAP

    DANILAP Нуб

    все верно, я знаю. но это меня не спасает :) в данном случае с учетом что серво 2 три раза стоит влияло бы только на то, что кнопки не верно работали, но джаваскрипт код даже не загружается в браузер.
     
  16. NikitOS

    NikitOS Король шутов Администратор

    Код (C++):
    client.println("function servo1() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo1/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo2/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo3/\", true);xhttp.send();}");
    client.println("function servo2() {var xhttp = new XMLHttpRequest();xhttp.open(\"GET\", \"/arduino/servo4/\", true);xhttp.send();}");
    т.е это не запускается вообще?
     
  17. DANILAP

    DANILAP Нуб

    Запускается только если две кнопки оставить, то тогда htmlка полностью в браузер загружается и все работает отлично, просто супер, но если еще в код кнопку добавить, то код уже полностью не загружается и сами понимаете, то творчество тут же обламывается. Сервоприводов больше двух нужно.