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

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Показ в браузере надписи «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 }

См.также

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