Arduino:Примеры/Web HelloWorld
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин (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 }
См.также
Внешние ссылки