Arduino:Примеры/TelnetClient

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

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


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);
  }
}

См.также

  1. Arduino Ethernet Shield
  2. Getting started with the ethernet shield
  3. Ethernet library
  4. ChatServer
  5. WebClient
  6. WebServer
  7. PachubeCient?
  8. TwitterClient
  9. BarometricPressureWebServer

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