• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Откуда-то берется левый код в веб-странице

Legion12

New member
Всем снова привет:(

Процесс засовывания веб-страницы в ESP у меня выглядит так:
Код:
const char mainPage[] PROGMEM = R"======(
//вебстраничка
)======";
Во время очередного теста прямо посреди кода веб-страницы вылез баг:
1586761548396.png


Обалдела, посмотрела в консоль через хром - прмо посреди кода вклинилось и вместе с кодом отправляется:

HTML:
       <canvas id = "lines3" width = "300" height = "4" style =" vertical-align: middle; margin: 0 auto; padding: 0;">
  <!--текст будет отображен только в том случае, если браузер пользователя не имеет поддержки элемента <canvas> -->
    Этот элемент не поддерживается. 
                           </canvas>
                <br>
#line 316 "D:\\Test_prog_v2\\Test_prog_v2.ino" function ShowMenu();
#line 349 "D:\\Test_prog_v2\\Test_prog_v2.ino" function grow();
#line 431 "D:\\Test_prog_v2\\Test_prog_v2.ino" function peakDraw();
#line 438 "D:\\Test_prog_v2\\Test_prog_v2.ino" function op();
#line 440 "D:\\Test_prog_v2\\Test_prog_v2.ino" function msg(e);
#line 466 "D:\\Test_prog_v2\\Test_prog_v2.ino" function btn_reset();
#line 481 "D:\\Test_prog_v2\\Test_prog_v2.ino" function button1Click();
#line 485 "D:\\Test_prog_v2\\Test_prog_v2.ino" function button2Click();
#line 489 "D:\\Test_prog_v2\\Test_prog_v2.ino" function button3Click();                
            <table style=" width:300px;">
Если разбирать что в строке, то:
#line 481 - указатель на строку кода в среде ардуино, соответствует действительности,

"D:\\Test_prog_v2\\Test_prog_v2.ino" - путь к файлу ардуино

function button1Click(); - функция внутри веб-страницы, которая на этой строке находится.

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

Кто-нибудь с таким сталкивался?...
 

Victor

Administrator
Команда форума
Кто-нибудь с таким сталкивался?...
попробуйте отключить все расширения браузера - возможно, что дополнительный код находится не в прошивке, а добавляется "на лету" каким-то расширением, они часто этим грешат, вставляя, например, рекламные блоки
 

Legion12

New member
попробуйте отключить все расширения браузера - возможно, что дополнительный код находится не в прошивке, а добавляется "на лету" каким-то расширением, они часто этим грешат, вставляя, например, рекламные блоки
Никакой связи, проверено на разных браузерах:((( Да и... откуда браузер знает строки кода из среды ардуины....
 

CodeNameHawk

Moderator
Команда форума
Похоже на наложение памяти, какой размер страницы, как выводиться и.т.д.
Выведите содержимое mainPage в Serial.
Попробуйте пересобрать в АрдуиноИде, если собираете не в нем.
 

Legion12

New member
Похоже на наложение памяти, какой размер страницы, как выводиться и.т.д.
Выведите содержимое mainPage в Serial.
Попробуйте пересобрать в АрдуиноИде, если собираете не в нем.
Можно немного подробнее - что такое "наложение" памяти?
Страница в виде html-файла - 23кб. Есть страница больше - 34кб, с ней такой проблемы по какой-то неведомой нет...
 

CodeNameHawk

Moderator
Команда форума
Например, в памяти расположены две переменные, допустим каждая длиною 100 байт.
И теперь при записи в первую переменную 150 байт, 50 байт окажутся во второй переменной.
Проверить длину данных - задача программиста.
 

Legion12

New member
Проблема решена... Косяк был в коде вебстраницы, в строчке подключения к вебсокету.

Вот при таком написании вылезал указанный баг:
JavaScript:
 var socket = new WebSocket('ws://192.168.11.4:91'); // подключение к веб-сокету ip:port
А вот так он покушал за милую душу, и проблема исчеза:
JavaScript:
 var address='ws://192.168.11.4:91';
 var socket = new WebSocket(address); // подключение к веб-сокету ip:port
Почему - не знаю. Кто расскажет - буду крайне признательна :(
 

NeoroN

Member
Проблема решена... Косяк был в коде вебстраницы, в строчке подключения к вебсокету.

Вот при таком написании вылезал указанный баг:
JavaScript:
 var socket = new WebSocket('ws://192.168.11.4:91'); // подключение к веб-сокету ip:port
А вот так он покушал за милую душу, и проблема исчеза:
JavaScript:
 var address='ws://192.168.11.4:91';
var socket = new WebSocket(address); // подключение к веб-сокету ip:port
Почему - не знаю. Кто расскажет - буду крайне признательна :(
Косяк был совсем в другом - в некорректной работе PROGMEM с заданной длинной вебстраницы, поменяли длинну вебстраницы, баг перестал проявляться, но не ушел. Еще раз поменяете - вернется.
Это отладочные строки из PROGMEM:
#line 489 "D:\\Test_prog_v2\\Test_prog_v2.ino" function button3Click();
 

Legion12

New member
Косяк был совсем в другом - в некорректной работе PROGMEM с заданной длинной вебстраницы, поменяли длинну вебстраницы, баг перестал проявляться, но не ушел. Еще раз поменяете - вернется.
Это отладочные строки из PROGMEM:
#line 489 "D:\\Test_prog_v2\\Test_prog_v2.ino" function button3Click();
Проверяла, неоднократно, с разными веб-страницами разной длины - бага нет, то есть абсолютно. Он не возникает посреди подгружаемой из PROGMEM страницы, если синтаксис такой, как указано.

Если строчка останется в виде:
JavaScript:
var socket = new WebSocket('ws://192.168.11.4:91'); // подключение к веб-сокету ip:port
то никакая другая корректировка страницы на объем кода не поможет.
 
Сверху Снизу