Arduino:Примеры/TelnetClient: различия между версиями
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Нет описания правки |
||
Строка 29: | Строка 29: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
TELNET-клиент | TELNET-клиент |
Версия от 18:20, 14 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
TELNET-клиент[1]
Этот пример подключает Arduino к TELNET-серверу при помощи Ethernet Shield. Сообщения могут идти в обе стороны – от Arduino к удаленному серверу и от удаленного сервера к Arduino – и эта коммуникация осуществляется при помощи последовательной передачи данных. Для этих целей отлично подходит Serial Monitor.
Необходимое оборудование
- Сетевой модуль Arduino Ethernet Shield;
- Плата Arduino, совместимая с Shield;
Необходимое ПО
- TELNET-сервер;
- Также для этой цели подойдет скетч Processing под названием ChatServer;
Цепь
Shield позволяет подключить плату Arduino к Ethernet-контроллеру WizNet (через SPI), и это подключение осуществляется при помощи 10-ого, 11-ого, 12-ого и 13-ого контактов. У более поздних моделей Shield имеется встроенный слот для SD-карты, SS-контакт которой в данном примере управляется через 4-ый цифровой контакт.
Shield должен быть подключен к сети при помощи Ethernet-кабеля. Также вам надо поменять сетевые настройки в скетче, чтобы они соответствовали настройкам вашей сети.
Shield крепится поверх платы Arduino.
Код
/*
TELNET-клиент
Этот скетч, используя Arduino Ethernet Shield на базе WizNet, подключается к TELNET-серверу (http://www.google.com).
Вам потребуется TELNET-сервер, с которым его можно протестировать.
Для этой цели хорошо подойдет скетч Processing под названием
ChatServer (часть библиотеки Network), запущенный на порте 10002.
Его можно найти среди примеров в приложении Processing,
которое можно скачать здесь ¬- http://processing.org.
Цепь:
* Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам
Создан 14 сентября 2010,
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
*/
#include <SPI.h>
#include <Ethernet.h>
// Ниже вводим MAC-адрес и IP-адрес вашего контроллера.
// IP-адрес будет зависеть от вашей локальной сети:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
// Вводим IP-адрес сервера, к которому собираемся подключиться:
IPAddress server(1,1,1,1);
// Инициализируем библиотеку EthernetClient
// с необходимыми для нас IP-адресом и портом сервера
// (порт 23 является для TELNET портом по умолчанию,
// но если вы используете скетч Processing, то вам нужен порт 10002):
EthernetClient client;
void setup() {
// Запускаем Ethernet-соединение:
Ethernet.begin(mac, ip);
// Инициализируем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // Ждем подключения последовательного порта (нужно только для Leonardo)
}
// Даем Shield секунду на инициализацию:
delay(1000);
Serial.println("connecting..."); // "Подключение..."
// Если успешно подключились, сообщаем об этом на Serial Monitor:
if (client.connect(server, 10002)) {
Serial.println("connected"); // "Подключено"
}
else {
// Впрочем, если подключиться не удалось, тоже сообщаем:
Serial.println("connection failed"); // "Подключиться не удалось"
}
}
void loop()
{
// Если от сервера доступны какие-либо входящие байты,
// считываем их и выводим через Serial Monitor:
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// Покуда в очереди есть какие-нибудь данные,
// считываем их и «выгоняем» из порта (если он открыт):
while (Serial.available() > 0) {
char inChar = Serial.read();
if (client.connected()) {
client.print(inChar);
}
}
// Если сервер отключился, останавливаем работу клиента:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting."); // "Отключение."
client.stop();
// Ничего не делаем:
while(true);
}
}
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- WebClient
- WebServer
- PachubeCient?
- TwitterClient
- BarometricPressureWebServer