Arduino:Примеры/Web HelloWorld
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Показ в браузере надписи «Hello, World!»[1]
Этот пример демонстрирует, как при помощи библиотеки Webduino отобразить в окне браузера надпись «Hello, World!»
Код
/* Показ в браузере надписи «Hello, World!» (Webduino) */
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
/* ПОСТАВЬТЕ ЗДЕСЬ СОБСТВЕННОЕ ЗНАЧЕНИЕ. MAC-адрес должен отличаться
* от других девайсов в сети. Если MAC-адрес Ethernet-модуля совпадет
* с другим MAC-адресом, это повлечет проблемы с получением пакетов.
*/
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
/* ВЫСТАВЬТЕ ТУТ ЗНАЧЕНИЕ, СООТВЕТСТВУЮЩЕЕ СЕТИ ВАШЕГО ХОСТА.
* Большинство сетей находятся в диапазонах 192.168.0.XXX
* или 192.168.1.XXX. Выберите адрес, который не используется
* и не присваивается автоматически DHCP-сервисом, к которому
* подключен ваш роутер.
*/
static uint8_t ip[] = { 192, 168, 1, 210 };
/* Это создает экземпляр веб-сервера. Как PREFIX указываем "",
* благодаря чему все страницы будут в корне сервера. */
#define PREFIX ""
WebServer webserver(PREFIX, 80);
/* Команды – это функции, вызываемые веб-сервером. Они могут считывать
// любые данные, опубликованные клиентом, и передавать их обратно от
// сервера к браузеру.
*/
void helloCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
/* отправляем стандартное сообщение, что запрос был успешным. */
server.httpSuccess();
/* Если получили GET или POST, то показываем данные.
Если получили HEAD request, останавливаемся после
показа заголовков */
if (type != WebServer::HEAD)
{
/* Записываем HTML-текст в PROGMEM (память только для считывания).
* Это нужно для того, чтобы не загружать лишними строками
* оперативную (RAM) память. */
P(helloMsg) = "<h1>Hello, World!</h1>";
/* Специальная функция для того, чтобы выводить текст из PROGMEM
*/
server.printP(helloMsg);
}
}
void setup()
{
/* Инициализируем Ethernet-модуль */
Ethernet.begin(mac, ip);
/* Указываем команду, которая будет запускаться, когда пользователь
* получит доступ к корневой странице сервера. */
webserver.setDefaultCommand(&helloCmd);
/* Запускаем ту же команду, если пользователь пытается
* загрузить /index.html – эта страница, как правило, считается
* на сайте самой главной. */
webserver.addCommand("index.html", &helloCmd);
/* Запускаем веб-сервер. */
webserver.begin();
}
void loop()
{
char buff[64];
int len = 64;
/* Вечно обрабатываем входящие соединения (по одному за раз) */
webserver.processConnection(buff, &len);
}