Arduino Mega Server

Модератор: Alex

Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 7:10 am

GaiverX писал(а):void insertBlock(uint8_t typeOperation, EthernetClient cl) {
if (typeOperation == TYPE_LINKS) {
if (modeNetWork == MODE_ONE) {
switch (currentDesign) {
case HOME_DESIGN: tempFile = SD.open("_one_hm.htm"); break;
case MODERN_DESIGN: tempFile = SD.open("_one_md.htm"); break;
case AMPERKA_DESIGN: tempFile = SD.open("_one_am.htm"); break;
default: tempFile = SD.open("_one.htm");

Разве не оно? в server_maker.ino
Да, проглядел. Пардону просим.

for nicelight.
В браузере есть режим разработчика. Открывается он либо нажатием кнопки F12(Chrome) либо ПКМ и "Просмотр кода элемента".
К примеру, кликнув на кнопку LED 3 is OFF, я получил следующий код:

Код: Выделить всё

<button type="button" id="LED4" onclick="GetButton2()">KEY 3 is ON (D3)</button>
Следовательно, надо искать где-то в js файлах функцию GetButton2().
Ну, по-моему скромному разумению, как-то так.
Поиск по файлам сообщил, что функция GetButton2() была обнаружена в файлах Settings.js, sample2.js, и electro.js.
Вот, к примеру, код из sample2.js
СпойлерПоказать
function GetButton2() {
if (LED4_state === 1) {
LED4_state = 0;
strLED4 = "&LED4=0";
} else {
LED4_state = 1;
strLED4 = "&LED4=1";
}
}
Так, теперь надо разобраться в том, как работает эта функция.
Т.к. в яваскрипте я величина, стремящаяся к нулю, буду разбирать построчно, если что, поправите.
Если состояние LED4 = 1, то сменить его на ноль
беглый гуглинг показал, что в яваскрипте str - сокращение от string, строки. Стало быть, если физически состояния LED изменили, нужно дать об этом знать куда-то еще ( в ajax, предположительно), что и достигается данной строкой. Идем дальше.
Вот тут я немного не понял."LED4_state" это какая-то сторонняя переменная? Т.е. при нажатии кнопки считывается состояние этой переменной, которая где-то(где?) изменяется, при нажатии кнопки на сайте. И если соотвествует 1, то выполнить первую часть условия, если не соответствует, вторую.
Все верно?

Заметил, что страница, на которой расположена кнопка, называется sample2.htm, стало быть, мы находимся в js файле этой страницы.
Еще хотелось бы понять, в каком месте кода при нажатии кнопки меняется состояние LED4_state.
За это сообщение автора Vetrinus поблагодарил:
nicelight (Пт окт 02, 2015 8:52 pm)
Рейтинг: 1.16%
GaiverX
Сообщения: 62
Зарегистрирован: Ср авг 26, 2015 3:15 pm
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: Arduino Mega Server

Сообщение GaiverX » Вт сен 29, 2015 8:04 am

путь этой функции лежит в server_ajax.ino

// LED 4 (pin 3)
if (StrContains(HTTP_req, "LED4=1")) {
LED_state[3] = 1;
digitalWrite(3, HIGH);
} else if (StrContains(HTTP_req, "LED4=0")) {
LED_state[3] = 0;
digitalWrite(3, LOW);
}

Лично для себя я вижу реализацию этой кнопки для удаленного включения/выключения и перезагрузки ПК. К нужным пинам подключил провода от материнской платы, и вуаля.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт сен 29, 2015 8:19 am

Так, теперь надо разобраться в том, как работает эта функция.
Да, примерно так и нужно разбираться. Через неделю упорных усилий сложите пазл.

Когда разберётесь как работает АМС (месяц-другой-третий усилий) вдруг обнаружите, что знаете все веб-технологии.
Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 8:30 am

У вас, случайно, мега сама по себе не перезагружается? А то я периодически замечаю, как у меня обнуляется аптайм
Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 8:36 am

Немного оффтопа, надеюсь меня простят.
Запустилась единая образовательная платформа
https://sso.openedu.ru
Там есть курс по web dev'у. Я записан. Очень понятно, с аналогиями, для нулей в области веб технологий изложено.
Курс называется веб программирование. Начался вчера. Есть интерактивные задания и испытания. Мне вчера было реально интересно убить на это час-полтора.
Надеюсь, кому-то оказжется полезным, и еще раз извиняюсь за оффтоп.
За это сообщение автора Vetrinus поблагодарили (всего 2):
vovcheg56 (Вт сен 29, 2015 11:28 pm) • Gorgon67 (Ср сен 30, 2015 2:00 pm)
Рейтинг: 2.33%
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт сен 29, 2015 8:46 am

У вас, случайно, мега сама по себе не перезагружается? А то я периодически замечаю, как у меня обнуляется аптайм
Это происходит, когда не хватает памяти и стек налезает на кучу в динамике. Попробуйте закомментировать пару модулей, если перестанет перегружаться, значит дело было в нехватке памяти.
Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 9:03 am

Alex писал(а):
У вас, случайно, мега сама по себе не перезагружается? А то я периодически замечаю, как у меня обнуляется аптайм
Это происходит, когда не хватает памяти и стек налезает на кучу в динамике. Попробуйте закомментировать пару модулей, если перестанет перегружаться, значит дело было в нехватке памяти.
Сделал, как вы сказали, подождал немного времени, забыл. Обратил внимание, что на шилде прекратили мигать светодиоды. Полез смотреть аптайм. Он остановился на 04:59. В окне отладки ajax ничего не менялось. Попытка перезагрузить страницу в браузере ничего не дает (ERR_CONNECTION_TIMED_OUT).
Вот, что висит в ком порту:
СпойлерПоказать
MEGA started...
Init SD card... OK
index.htm... found
Waiting for NTP sync...
Transmit NTP request
No NTP response
Connect to MajorDoMo... failed
Init SD card... OK
1970-01-01 00:00:21 not connected
1970-01-01 00:00:40 not connected
1970-01-01 00:01:00 not connected
1970-01-01 00:01:01 not connected
1970-01-01 00:01:20 not connected
1970-01-01 00:01:41 not connected
1970-01-01 00:02:01 not connected
1970-01-01 00:02:01 not connected
(duration 1 min 0 sec)
1970-01-01 00:02:21 not connected
1970-01-01 00:02:41 not connected
1970-01-01 00:03:00 not connected
1970-01-01 00:03:01 not connected
(duration 1 min 0 sec)
1970-01-01 00:03:20 not connected
1970-01-01 00:03:40 not connected
1970-01-01 00:04:00 not connected
1970-01-01 00:04:01 not connected
(duration 1 min 0 sec)
1970-01-01 00:04:24 not connected
1970-01-01 00:04:44 not connected
Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 9:32 am

Все повторилось. Опять на 4:59 остановилась всякая деятельность
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт сен 29, 2015 9:43 am

Дистрибутив так себя не ведёт. Причину нужно искать во внесённых вами изменениях.
Vetrinus
Сообщения: 14
Зарегистрирован: Сб сен 26, 2015 11:19 am
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение Vetrinus » Вт сен 29, 2015 10:18 am

Да, залил дистрибутив из архива, аптайм уже около получаса.
Ответить