Доброго времени суток, уважаемые форумчане. Пришла мне в голову мысль сделать систему контроля ресурсов загородного дома(газ, вода и т.д). Купил счётчик импульсов для газового счётчика и импульсный счётчик воды. Решил сделать эту систему на Arduino UNO, т.к платить 7 тысяч рублей за контроллер был не готов. Со считыванием импульсов у меня проблем не возникло, но позже, было решено добавить в HTML сервер, поднятый на дуине, поле для ввода ранних значений счётчика в переменную и кнопку отправить. С этим у меня уже и возникли проблемы. Зашёл в тупик и не знаю как быть дальше. Прошу помощи
https://hi-lab.ru/arduino-mega-server Это для таких мегакрутых проектов ссылочка. "Фантастические возможности уже сегодня!"
Cпасибо большое! Буду пробовать Проблема в считывании числа из формы, которое вводится в него. То есть ввёл число, нажал отправить и у меня должно к общему значению счётчика должно добавится то значение, которое я ввёл из формы
А причем тут мы — не ясно. Здесь могут помочь найти и исправить ошибки в существующем коде, а в теме кода не дали. Если нужно, чтобы сделали за Вас — Закажу проект.
Код (C++): #include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address //byte gateway[] = { 192, 168, 0, 1 }; // internet access via router //byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(80); //server port IPAddress ip(192, 168, 0, 89); String readString; String intString; int value; int value1; int value2; ////////////////////// void setup(){ pinMode(8, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip); server.begin(); //enable serial data print Serial.begin(9600); Serial.println(Ethernet.localIP()); } void loop(){ EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); if (readString.length() < 100) { //store characters to string readString += c; Serial.print(c); } if (c == '\n') { Serial.println(readString); //see what was captured client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>GET page</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<FORM ACTION='/' method=get >"); //uses IP/port of web page client.println("<INPUT TYPE=NUMBER NAME='VALUE' VALUE="+intString+" ><BR>"); intString == intString; client.println("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Send'>"); client.println(value2); client.println("</FORM>"); client.println("<BR>"); client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop(); ///////////////////// if(readString.indexOf(value) >0)//checks for on { Serial.print(value2); digitalWrite(8, HIGH); // set pin 5 high Serial.println(" On"); } if(readString.indexOf("off5") >0)//checks for off { digitalWrite(8, LOW); // set pin 5 low Serial.println("Led Off"); } if (c == '?') { } //clearing string for next read readString=""; } } } } }
Всё равно какая то путаница. Я ввёл значение в HTML поле и нажал "send". После чего, в мониторе последовательного порта у меня появился ответ в виде строки: GET /?VALUE=12312&submit=Send HTTP/1.1 Подскажите пожалуйста, как мне выцепить VALUE из этой строки?