Страница 1 из 1

Ошибки блока WebServerPage

Добавлено: 09.12.2016{, 10:53}
ItsMe
Подключил модуль ENC28J60EthernetShield
Получил баги:

1. При добавлении второго или больше входа типа String  - ошибка компиляции - повторное декларирование переменных, связанных с этими входами. Если руками в компилированном коде поправить ошибки - все нормально;
2. При использовании в теле страницы HTML-тегов группы <td></td> и <tr></tr>, браузер теряет связь с блоком после 2-го обновления страницы. Увеличение периода обновления результатов не дает.
3. Конечный текст страницы теряет заголовок HTML-документа (<!DOCTYPE html>) вплоть до собственно <html></html>. В компилированном коде видно, что он присутствует, но не выводится в браузер:
Вот выхлоп браузера:

<html>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<center><b>Сегодня - 165.165.2165 165:165:85</b></center><br>
Время работы системы: 944 сек.<br>
На Дисплее:
<a href=/>Главная</a><br>
<a href=kotel>Котел</a><br>
<a href=home>В дом</a><br>
<a href=room>Комната</a><br>
</html>

А вот - компилированный код функции:
static word homePage3()
{bfill = ether.tcpOffset();
bfill.emit_p(PSTR(
"HTTP/1.1 200 OK \r\n"
"Content-Type: text/html\r\n"
"Connection: close\r\n"
"Refresh: 2\r\n"
"<!DOCTYPE HTML>\r\n"
"\r\n""<html>\r\n"));
bfill.emit_p(PSTR("<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\r\n"));
bfill.emit_p(PSTR("<center><b>Сегодня - \r\n"));

String _WTempString=_gtv31;
int _WTemplen=((_WTempString.length())+1);
char _WTempBuffer[_WTemplen];
_WTempString.toCharArray(_WTempBuffer,_WTemplen);
bfill.emit_p(PSTR("$S"),_WTempBuffer);

bfill.emit_p(PSTR("</b></center><br>\r\n"));
bfill.emit_p(PSTR("Время работы системы: \r\n"));

bfill.emit_p(PSTR("$D"),_gtv35);

bfill.emit_p(PSTR(" сек.<br>\r\n"));
bfill.emit_p(PSTR("На Дисплее:\r\n"));
bfill.emit_p(PSTR("\r\n"));
bfill.emit_p(PSTR("<a href=/>Главная</a><br>\r\n"));
bfill.emit_p(PSTR("<a href=kotel>Котел</a><br>\r\n"));
bfill.emit_p(PSTR("<a href=home>В дом</a><br>\r\n"));
bfill.emit_p(PSTR("<a href=room>Комната</a><br>\r\n"));

bfill.emit_p(PSTR("</html>\r\n"));
return bfill.position();
}

А самое интересное - зачем в коде появляется лишняя и ничего не делающая функция static word homePage, после которой идут все необходимые функции, перечисляющие существующие страницы?

Добавлено (02.12.2016, 11:45)
---------------------------------------------
В процессе разборов в силу своих способностей обнаружил, что переменные типа float при выводе в ENC28J60 показываются браузером равными 0 при изменении типа переменной в описании в скетче на int получаем в браузере значение.

Продолжим далее...

Добавлено (02.12.2016, 11:57)
---------------------------------------------
И в догоночку...
При использовании в одном блоке webserver нескольких целочисленных переменных, выводится значение первой полученной переменной. Значения остальных обнуляются.

Добавлено (09.12.2016, 10:53)
---------------------------------------------
После долгих стараний как-то вытащить инфу в ентот шильдик, пришел к очень простому и пока единственному решению: Вне блока формирую длинную строку со всем выводом в браузер, а потом передать ее в блок. И о-чудо, работает.

К-стати, при попытке получить IP-адрес по DHCP программа вылетает при компиляции.

Ошибки блока WebServerPage

Добавлено: 10.02.2017{, 10:32}
Gus
Подтверждаю. ошибка в последней версии осталась.
подскажите как исправить самостоятельно?