Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Web HelloWorld

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Показ в браузере надписи «Hello, World!»[1]

Этот пример демонстрирует, как при помощи библиотеки Webduino отобразить в окне браузера надпись «Hello, World!»

Код

  1. /* Показ в браузере надписи «Hello, World!» (Webduino)  */
  2.  
  3. #include "SPI.h"
  4. #include "Ethernet.h"
  5. #include "WebServer.h"
  6.  
  7. /* ПОСТАВЬТЕ ЗДЕСЬ СОБСТВЕННОЕ ЗНАЧЕНИЕ. MAC-адрес должен отличаться
  8.  * от других девайсов в сети. Если MAC-адрес Ethernet-модуля совпадет
  9.  * с другим MAC-адресом, это повлечет проблемы с получением пакетов.
  10.  */
  11. static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  12.  
  13.  
  14. /* ВЫСТАВЬТЕ ТУТ ЗНАЧЕНИЕ, СООТВЕТСТВУЮЩЕЕ СЕТИ ВАШЕГО ХОСТА.
  15.  * Большинство сетей находятся в диапазонах 192.168.0.XXX
  16.  * или 192.168.1.XXX. Выберите адрес, который не используется
  17.  * и не присваивается автоматически DHCP-сервисом, к которому
  18.  * подключен ваш роутер.
  19. */
  20. static uint8_t ip[] = { 192, 168, 1, 210 };
  21.  
  22. /* Это создает экземпляр веб-сервера. Как PREFIX указываем "",
  23.  * благодаря чему все страницы будут в корне сервера. */
  24. #define PREFIX ""
  25. WebServer webserver(PREFIX, 80);
  26.  
  27. /* Команды – это функции, вызываемые веб-сервером. Они могут считывать
  28. // любые данные, опубликованные клиентом, и передавать их обратно от
  29. // сервера к браузеру.
  30. */
  31. void helloCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
  32. {
  33.   /* отправляем стандартное сообщение, что запрос был успешным. */
  34.   server.httpSuccess();
  35.  
  36.   /* Если получили GET или POST, то показываем данные.
  37.      Если получили HEAD request, останавливаемся после
  38.      показа заголовков */
  39.   if (type != WebServer::HEAD)
  40.   {
  41.     /* Записываем HTML-текст в PROGMEM (память только для считывания).
  42.      * Это нужно для того, чтобы не загружать лишними строками
  43.      * оперативную (RAM) память. */
  44.     P(helloMsg) = "<h1>Hello, World!</h1>";
  45.  
  46.     /* Специальная функция для того, чтобы выводить текст из PROGMEM  
  47.     */
  48.     server.printP(helloMsg);
  49.   }
  50. }
  51.  
  52. void setup()
  53. {
  54.   /* Инициализируем Ethernet-модуль */
  55.   Ethernet.begin(mac, ip);
  56.  
  57.   /* Указываем команду, которая будет запускаться, когда пользователь
  58.    * получит доступ к корневой странице сервера. */
  59.   webserver.setDefaultCommand(&helloCmd);
  60.  
  61.   /* Запускаем ту же команду, если пользователь пытается
  62.    * загрузить /index.html – эта страница, как правило, считается
  63.    * на сайте самой главной. */
  64.   webserver.addCommand("index.html", &helloCmd);
  65.  
  66.   /* Запускаем веб-сервер. */
  67.   webserver.begin();
  68. }
  69.  
  70. void loop()
  71. {
  72.   char buff[64];
  73.   int len = 64;
  74.  
  75.   /* Вечно обрабатываем входящие соединения (по одному за раз) */
  76.   webserver.processConnection(buff, &len);
  77. }

См.также

Внешние ссылки

  1. github.com - Web_HelloWorld.ino