server.arg

Nik_Frol
Offline
Зарегистрирован: 28.10.2020

Доброго времени суток, есть код обработчик:

void handleSave() {
  if (server.arg("hh")!= ""){
    Serial.println("Hours: " + server.arg("hh"));
  }

Код написан с помощью библиотеки etherShield.h и ETHER_28J60.h

Мне надо написать так но с помощью библиотеки UIPEthernet.h

Кто может помочь?(
Общий код программы:

// WEB сервер, управляет светодиодом
#include <SPI.h>
#include <UIPEthernet.h>

// определяем конфигурацию сети
byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C};  // MAC-адресадрес

EthernetServer server(80);  // создаем сервер, порт 80
EthernetClient client;  // объект клиент

boolean flagEmptyLine = true; // признак строка пустая
char tempChar;
char urnFromRequest[51];  // строка URN из запроса
boolean urnReceived= false; // признак URN принят
unsigned int indUrn;  // адрес в строке URN

void setup() {
  Ethernet.begin(mac);  // инициализация контроллера
  server.begin(); // включаем ожидание входящих соединений
  Serial.begin(9600);    
  Serial.print("Server address:");
  Serial.println(Ethernet.localIP()); // выводим IP-адрес контроллера
  Serial.print("");
  pinMode(2, OUTPUT); // вывод светодиода
}
void loop() {
  client = server.available(); // ожидаем объект клиент
  if (client) {
    flagEmptyLine = true;
    urnReceived = false;
    indUrn=0xffff;
    Serial.println("New request from client:");

    while (client.connected()) {
      if (client.available()) {
        tempChar = client.read();
        Serial.println(tempChar);

        // прием URN
        if( urnReceived == false ) {
          
          if( indUrn == 0xffff ) {
            // пропуск метода
            if( tempChar == '/' ) indUrn=0;  
          }
          else {
            // запись строки
            if( tempChar == ' ' ) {
              // URN закончен
                urnFromRequest[indUrn]=0;
                urnReceived = true;              
            }
            else {
              // загрузка символа URN в строку
              urnFromRequest[indUrn] = tempChar;
              indUrn++;
              if( indUrn > 49 ) {
                // переполнение
                urnFromRequest[50]=0;
                urnReceived = true;
              }
            }            
          }          
        }
        
        if (tempChar == '\n' && flagEmptyLine) {

          // управление светодиодом
          if( strcmp(urnFromRequest, "ON") == 0) digitalWrite(2, HIGH);
          else if( strcmp(urnFromRequest, "OFF") == 0) digitalWrite(2, LOW);

          // пустая строка, ответ клиенту
          client.println(F("HTTP/1.1 200 OK"));  // стартовая строка
          client.println(F("Content-Type: text/html; charset=utf-8"));  // тело передается в коде HTML, кодировка UTF-8
          client.println(F("Connection: close"));  // закрыть сессию после ответа
          client.println(); // пустая строка отделяет тело сообщения
          client.println(F("<!DOCTYPE HTML>"));  // тело сообщения

          client.println(F("<html>"));
          client.println(F("<font size=\"5\">"));
          // состояние светодиода
          if( digitalRead(2) == HIGH ) client.println(F("Светодиод включен"));            
          else client.println(F("Светодиод выключен"));            
          client.println(F("</font><br><br><font size=\"4\"><a href=\"/ON\"><button><font size=\"4\">Включить светодиод</font></button></a></font><br><br><font size=\"4\"><a href=\"/OFF\"><button><font size=\"4\">Выключить светодиод</font></button></a></font>"));          
          client.print(F("<form  method=\"post\" name=\"form\"><br>Время:<input name=\"fname\" type=\"clock\" value=\"\"><input type=\"submit\" name=\"send\" value=\"Отправить\"></form>"));              
          client.println(F("<input type=\"clock\" name=\"date_hh\" id=\"date_hh\" >"));
          client.println("</html>");
          client.println(F("<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>"));
          client.println(F("<script>"));
          client.println(F("var hh;"));
          client.println(F("$('#save_button').click(function(e){"));
          client.println(F("e.preventDefault();"));
          client.println(F("hh = $('#date_hh').val();"));
          client.println(F("$.get('/save?hh=' + hh, function(data){"));
          client.println(F("console.log(data);"));
          Serial.println(urnFromRequest);  
          break;
        }
                  if (strcmp(urnFromRequest,"hh") != ""){
            Serial.println("Hours: " + strcmp(urnFromRequest,"hh"));
          }
        if (tempChar == '\n') {
          // новая строка
          flagEmptyLine = true;
        } 
        else if (tempChar != '\r') {
          // в строке хотя бы один символ
          flagEmptyLine = false;
        }
      }
    }
    delay(1);
    // разрываем соединение
    client.stop();
    Serial.println("Break");
  }
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Помочь в чём - дописать 1000 строк для парсинга HTTP?