pos2 = request.indexOf("&", pos1);
commandStr = request.substring(pos1, pos2);
rele1mode = commandStr.toFloat();}[/code]
Имя и значение
Число 7 ( в примере ) означает число символов в имени переменной. Знак "=" тоже учитывается
Второе pos2 значение.
Модератор: Alex
serghei писал(а): ↑Сб сен 22, 2018 10:06 pmВозможно я изменил вкладку " Контакт". Привожу рабочий вариант. Сама вкладкаВ сервере ажаксКод: Выделить всё
/* Module Contacts part of Arduino Mega Server project */ #ifdef CONTACTS_FEATURE #define CONT1_PIN 27 #define CONT2_PIN 31 #define OPEN 1 #define CLOSE 0 char cont1object[] = "cont1"; char cont2object[] = "cont2"; char cont1openMess[] = "Open"; char cont1closeMess[] = "Closed"; char cont2openMess[] = "Down"; char cont2closeMess[] = "Norm"; // states // 0 - open // 1 - close // 2 - not defined byte cont1state = 2; byte old_cont1state = 2; byte cont1objectState = 2; byte cont2state = 2; byte old_cont2state = 2; byte cont2objectState = 2; void contactsInit() { pinMode(CONT1_PIN, INPUT); pinMode(CONT2_PIN, INPUT); moduleContacts = MODULE_ENABLE; started("Contacts"); } void printContMess(char obj[], char mess[]) { timeStamp(); Serial.print(obj); Serial.print(F(": ")); Serial.println(mess); } void contactsWorks() { // cont1 cont1state = digitalRead(CONT1_PIN); if (cont1state != old_cont1state) { old_cont1state = cont1state; if (cont1state == 0) { cont1objectState = OPEN; printContMess(cont1object, cont1openMess); #ifdef MAJORDOMO_FEATURE sendRequestM(cont1object, OPEN); #endif } else { cont1objectState = CLOSE; printContMess(cont1object, cont1closeMess); #ifdef MAJORDOMO_FEATURE sendRequestM(cont1object, CLOSE); #endif } } // cont2 cont2state = digitalRead(CONT2_PIN); if (cont2state != old_cont2state) { old_cont2state = cont2state; if (cont2state == 1) { cont2objectState = OPEN; printContMess(cont2object, cont2openMess); } else { cont2objectState = CLOSE; printContMess(cont2object, cont2closeMess); } } } // contactsWorks() #endif // CONTACTS_FEATURE
В Dash.jsКод: Выделить всё
#ifdef CONTACTS_FEATURE String makeContacts() { String s = ""; s += makeTag(BASE_CONTACT, "1", String(cont1objectState)); s += makeTag(BASE_CONTACT, "2", String(cont2objectState)); return s; } #endif ---------------- #ifdef CONTACTS_FEATURE s += makeContacts();// В void respDash(EthernetClient cl) { #endif
Только работает в инверсном режиме - при D31 на +5 вольт и D27 на корпус оба контакта красных. При D31 на корпус и D27 на +5 вольт - оба зеленых.Код: Выделить всё
// Contacts for (var i = 0; i < contName.length; i++) { try { var dcont = this.responseXML.getElementsByTagName(contXml[i])[0].childNodes[0].nodeValue; } catch (err) { dcont = '-1'; } try { document.getElementById(contId[i]).innerHTML = contName[i]; document.getElementById(contId[i]).style.background = contactBackground(dcont); document.getElementById(contId[i]).style.color = contactColor(dcont); } catch (err) { } }
Код: Выделить всё
// Data colors
var modulDisable = "#555555";
var modulPassive = "#887711";
var modulActive = "#1188dd";
function modulBackground (state) {switch (state) {case "0": return modulPassive; break; case "1": return modulActive; break; default: return modulDisable; break;}}
function modulColor (state) {switch (state) {case "0": return "#eeeeee"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function modeBackground (state) {switch (state) {case "1": return "#91A46B"; break; case "2": return "#AB5DB1"; break; default: return "#555555"; break;}}
function modeColor (state) {switch (state) {case "1": return "#ffffff"; break; case "2": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function forceBackground (state) {switch (state) {case "0": return "#6EA1D2"; break; case "1": return "#F4A509"; break; default: return "#555555"; break;}}
function forceColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function ntpBackground (state) {switch (state) {case "0": return "#6EA1D2"; break; case "1": return "#F4A509"; break; default: return "#555555"; break;}}
function ntpColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function authBackground (state) {switch (state) {case "0": return "#03B882"; break; case "1": return "#DA7063"; break; default: return "#555555"; break;}}
function authColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function onlineBackground (state) {switch (state) {case "0": return "#555555"; break; case "1": return "#3EAF3B"; break; default: return "#555555"; break;}}
function onlineColor (state) {switch (state) {case "0": return "#aaaaaa"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function contactBackground (state) {switch (state) {case "0": return "#68974C"; break; case "1": return "#B93737"; break; default: return "#555555"; break;}}
function contactColor (state) {switch (state) {case "0": return "#eeeeee"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function pirBackground (state) {switch (state) {case "0": return "#09999E"; break; case "1": return "#eedd22"; break; default: return "#555555"; break;}}
function pirColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#555555"; break; default: return "#aaaaaa"; break;}}
function stateOnOffBackground(state) {switch (state) {case "0": return "#555555"; break; case "1": return "#FAF39B"; break; default: return "#555555"; break;}}
function stateOnOffColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#000000"; break; default: return "#aaaaaa"; break;}}
function stateOnOff (state) {switch (state) {case "0": return "OFF"; break; case "1": return "ON"; break; default: return "-"; break;}}
function dueBackground (state) {switch (state) {case "0": return "#DA7063"; break; case "1": return "#04A9AE"; break; default: return "#555555"; break;}}
function dueColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
function radioBackground (state) {switch (state) {case "0": return "#DA7063"; break; case "1": return "#04A9AE"; break; default: return "#555555"; break;}}
function radioColor (state) {switch (state) {case "0": return "#ffffff"; break; case "1": return "#ffffff"; break; default: return "#aaaaaa"; break;}}
Попробуйте #ifdef и #endif уберите. По моему на него ругается.
На версию эзернета на самом деле пофигу. Ну ругается он что 2 библиотеки нашел - юзает то 1 нужную. Когда было написано для 1.6.4 (или какая там была до 1.8.5) - я в 1.8 с парой исправлений компилил, и всё ок было. И в 98% случаев если скомпилилось - значит будет работать. Компилятор объявленные директивы понимает однозначно. А то что он не понимает - на это он ругается. А так да, действительно...не мучайтесь, скачайте портативную 1.8.5 - всё должно скомпилится без ошибок.