Добрый день, коллеги! Приобрел плату 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 код грузится не полностью, на каком-то этапе обрывается, другими словами код страницы загружается в браузер частично), из-за чего верстка страницы разваливается. В связи с этим возник вопрос. Правильно я понимаю, что со стороны ардуино есть ограничение на размер отправляемого веб-клиенту документа? Или я не прав? Как можно снять это ограничение и с чем оно связано? Благодарю всех за помощь и ответы.
Сорри. Код (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>"); }
дело не в этом, что боди не открывается, даже если добавлю 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
Это я с Вами согласен, но проблема в том, что весь документ полностью не отдает. Пробовал Document Length в хедере ставить - проблема не решается, грузится страница дольше, но все равно на половине кода обрывается. Может где какие настройки размера документа или длины пакета выставить нужно?
Код (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 РАЗА
все верно, я знаю. но это меня не спасает в данном случае с учетом что серво 2 три раза стоит влияло бы только на то, что кнопки не верно работали, но джаваскрипт код даже не загружается в браузер.
Код (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();}"); т.е это не запускается вообще?
Запускается только если две кнопки оставить, то тогда htmlка полностью в браузер загружается и все работает отлично, просто супер, но если еще в код кнопку добавить, то код уже полностью не загружается и сами понимаете, то творчество тут же обламывается. Сервоприводов больше двух нужно.