Arduino:Примеры/TelnetClient

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

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


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-кабеля. Также вам надо поменять сетевые настройки в скетче, чтобы они соответствовали настройкам вашей сети.

ArduinoPlusEthernetShield.png

Shield крепится поверх платы Arduino.

Код

 1 /*
 2 TELNET-клиент 
 3 
 4 Этот скетч, используя Arduino Ethernet Shield на базе WizNet, подключается к TELNET-серверу (http://www.google.com).
 5 Вам потребуется TELNET-сервер, с которым его можно протестировать.
 6 Для этой цели хорошо подойдет скетч Processing под названием 
 7 ChatServer (часть библиотеки Network), запущенный на порте 10002. 
 8 Его можно найти среди примеров в приложении Processing,
 9 которое можно скачать здесь ¬- http://processing.org.
10  
11 Цепь:
12 * Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам
13  
14 Создан 14 сентября 2010,
15 модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
16 */
17 
18 #include <SPI.h>
19 #include <Ethernet.h>
20 
21 // Ниже вводим MAC-адрес и IP-адрес вашего контроллера. 
22 // IP-адрес будет зависеть от вашей локальной сети:
23 byte mac[] = {  
24   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
25 IPAddress ip(192,168,1,177);
26 
27 // Вводим IP-адрес сервера, к которому собираемся подключиться:
28 IPAddress server(1,1,1,1); 
29 
30 // Инициализируем библиотеку EthernetClient 
31 // с необходимыми для нас IP-адресом и портом сервера
32 // (порт 23 является для TELNET портом по умолчанию,  
33 // но если вы используете скетч Processing, то вам нужен порт 10002):
34 EthernetClient client;
35 
36 void setup() {
37   // Запускаем Ethernet-соединение:
38   Ethernet.begin(mac, ip);
39  // Инициализируем последовательную передачу данных и ждем открытия порта:
40   Serial.begin(9600);
41    while (!Serial) {
42     ; // Ждем подключения последовательного порта (нужно только для Leonardo) 
43   }
44 
45 
46   // Даем Shield секунду на инициализацию: 
47   delay(1000);
48   Serial.println("connecting...");  //  "Подключение..."
49 
50   // Если успешно подключились, сообщаем об этом на Serial Monitor:
51   if (client.connect(server, 10002)) {
52     Serial.println("connected");  //  "Подключено"
53   } 
54   else {
55     // Впрочем, если подключиться не удалось, тоже сообщаем:
56     Serial.println("connection failed");  //  "Подключиться не удалось"
57 
58   }
59 }
60 
61 void loop()
62 {
63   // Если от сервера доступны какие-либо входящие байты,
64   // считываем их и выводим через Serial Monitor:
65   if (client.available()) {
66     char c = client.read();
67     Serial.print(c);
68   }
69 
70   // Покуда в очереди есть какие-нибудь данные,
71   // считываем их и «выгоняем» из порта (если он открыт):
72   while (Serial.available() > 0) {
73     char inChar = Serial.read();
74     if (client.connected()) {
75       client.print(inChar); 
76     }
77   }
78 
79   // Если сервер отключился, останавливаем работу клиента:
80   if (!client.connected()) {
81     Serial.println();
82     Serial.println("disconnecting.");  //  "Отключение."
83     client.stop();
84     // Ничего не делаем:
85     while(true);
86   }
87 }

См.также

  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

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