Разбор GET запроса

Ответить
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

Разбор GET запроса

Сообщение smol »

Привет Всем!

Появилась необходимость принят переменную в контроллер в виде GET запроса
http://server/?переменная=значение
Возможно ли это?
Anydy

Разбор GET запроса

Сообщение Anydy »

Конечно, посмотрите как идет отправка на различные сервисы....например народмон.ру thingspeak.com
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

Разбор GET запроса

Сообщение smol »

отправлять без проблем, а вот принять его ардуинкой?
http://arduino_IP/?переменная=значение
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Разбор GET запроса

Сообщение Sancho »

[ref]smol[/ref], нашёл для Вас, может поможет, сам не пробовал...
[spoiler]

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

String currentLine = "";
  client.connect(server, 80);
  delay (50);
          if (client.connected())
          {
            while (client.available())
            {
              char inChar = client.read();
              currentLine += inChar;
              if (currentLine == "1")
              {
                 // выполнить ....
               }
              if(currentLine == "0")
              {
                   // выполнить ....
               }
            }
            client.stop();
          }
[/spoiler]
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

Разбор GET запроса

Сообщение smol »

Я делал такое, думал может блоки у кого есть для такой фишки.

А вот как я делал без FLPROG

[spoiler]

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

void loop()
{
  EthernetClient client = server.available();

  if (client)
  {

    // HTTP запрос заканчивается пустой строкой
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();                                                                             

        if (receiving && c == ' ') receiving = false;                                                     
        if (c == '?') receiving = true;                        // Поиск аргументов переданных GET-запросом(аргументы после символа "?")

        // Обработка GET-запроса
        if (receiving)
        {
          // Если полученн аргумент 'L' - то управляем светодиодом
          if (c == 'L')
          {
            pin = client.parseInt();  
            digitalWrite(pin, !digitalRead(pin));                                                         
            break;
          }
          // Если получен аргумент 'S' - то управляем динамиком
          else if (c == 'S')
          {
           

          }
        }

        // Отправляем заголовок ответа и HTML-код
        if (!sentHeader)
        {
          // Отправляем стандартный заголовок ответа HTTP
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html\n");
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec


          // Красная кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='7' />");
          client.println("<input type='submit' value='Toggle Red' />");
          client.println("</form>");

          // Зеленая кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='6' />");
          client.println("<input type='submit' value='Toggle Gre' />");
          client.println("</form>");

          // Синяя кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='5' />");
          client.println("<input type='submit' value='Toggle Blu' />");
          client.println("</form>");

          sentHeader = true;
        }

        if (c == '\n' && currentLineIsBlank) break;

        if (c == '\n')
        {
          currentLineIsBlank = true;
        }
        else if (c != '\r')
        {
          currentLineIsBlank = false;
        }
      }
    }
    delay(5);                                                                                            
    client.stop();                                                                               
  }
}
[/spoiler]
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость