server.arg
- Войдите на сайт для отправки комментариев
Ср, 21/04/2021 - 10:23
Доброго времени суток, есть код обработчик:
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"); } }
Помочь в чём - дописать 1000 строк для парсинга HTTP?