Arduino:Примеры/UDPSendReceiveString
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Отправка и получение текстовых строк через UDP [1]
В данном примере вы воспользуетесь Arduino и Ethernet Shield для передачи и получения текстовых сообщений через протокол UDP (Universal Datagram Packet, т.е. «протокол пользовательских датаграмм»). Еще вам понадобится другой девайс (можно компьютер), которому вы будете отправлять эти строки и от которого вы будете их получать. Кроме того, в самом низу представлен скетч Processing, через который вы и будете осуществлять передачу данных.
Необходимое оборудование
- Сетевой модуль Arduino Ethernet Shield;
- Плата Arduino, совместимая с Ethernet Shield;
Цепь
Ethernet Shield позволяет подключить Arduino к Ethernet-контроллеру WizNet (через SPI-шину), и для этого подключения используются 10-ый, 11-ый, 12-ый и 13-ый контакты. У последних моделей Shield имеется встроенный слот для SD-карты. Управление SS-контактом этой SD-карты осуществляется при помощи 4-ого цифрового контакта.
Ethernet Shield должен быть подключен к сети посредством Ethernet-кабеля. Также вам надо будет поменять сетевые настройки скетча, чтобы они соответствовали настройкам вашей сети.
Ethernet Shield крепится поверх платы Arduino
Схема
Код к Arduino
/*
Отправка и передача строк через UPD
Этот скетч получает текстовые строки (через UPD), выводит их на Serial Monitor,
а затем отсылает «подтвержденную» строку обратно отправителю.
Ниже прилагается скетч к Processing, который можно использовать
для отправки и получения сообщений (если вы тестируете этот пример при помощи компьютера).
Создан 21 августа 2010 Майклом Марголисом (Michael Margolis).
Этот код не защищен авторским правом.
*/
#include <SPI.h> // требуется для Arduino версий 0018 и позже
#include <Ethernet.h>
#include <EthernetUdp.h> // библиотека UDP library (из bjoern@cs.stanford.edu 12/30/2008)
// Ниже введите MAC-адрес и IP-адрес вашего контроллера.
// IP-адрес будет зависеть от вашей локальной сети:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);
unsigned int localPort = 8888; // локальный порт, который будем прослушивать
// буферы для получения и отправки данных char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // буфер, в котором будет храниться входящий пакет
char ReplyBuffer[] = "acknowledged"; // строка, которая будет отсылаться обратно
// Создаем экземпляр класса EthernetUDP, чтобы отправлять и получать пакеты через UDP:
EthernetUDP Udp;
void setup() {
// Запускаем Ethernet и UDP:
Ethernet.begin(mac,ip);
Udp.begin(localPort);
Serial.begin(9600);
}
void loop() {
// Если есть какие-либо доступные данные, считываем пакет:
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("Received packet of size "); // "Получен пакет размером "
Serial.println(packetSize);
Serial.print("From "); // "От "
IPAddress remote = Udp.remoteIP();
for (int i =0; i < 4; i++)
{
Serial.print(remote[i], DEC);
if (i < 3)
{
Serial.print(".");
}
}
Serial.print(", port "); // ", порт "
Serial.println(Udp.remotePort());
// Считываем пакет в packetBufffer:
Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
Serial.println("Contents:"); // "Содержимое:"
Serial.println(packetBuffer);
// Отсылаем ответ. Получатель – IP-адрес и порт,
// от которых пришел полученный нами пакет:
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(ReplyBuffer);
Udp.endPacket();
}
delay(10);
}
Код к Processing
Скопируйте скетч к Processing, указанный ниже. Если вы напишите в окне этого скетча любую букву, он отошлет на Arduino текстовое сообщение (через UDP).
/*
Скетч к Processing для работы с этим примером
=====================================================
// Скетч Processing для работы с UDP.
// Отправляет на Arduino и получает обратно строковые данные.
// Нажмите любую клавишу, чтобы отправить сообщение "Hello Arduino".
*/
import hypermedia.net.*;
UDP udp; // определяем UDP-объект
void setup() {
udp = new UDP( this, 6000 ); // создаем новое UDP-соединение через порт 6000
//udp.log( true ); // <-- эта строчка кода отображает информацию об активности соединения
udp.listen( true ); // и ждем входящего сообщения
}
void draw()
{
}
void keyPressed() {
String ip = "192.168.1.177"; // IP-адрес устройства-получателя
int port = 8888; // порт-адресат
udp.send("Hello World", ip, port ); // сообщение, которое будем отправлять
}
void receive( byte[] data ) { // <-- стандартная функция для выполнения задачи
//void receive( byte[] data, String ip, int port ) { // <-- расширенная функция для выполнения задачи
for(int i=0; i < data.length; i++)
print(char(data[i]));
println();
}
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- ChatClient
- WebClient
- WebServer
- PachubeClient?
- PachubeClientString?
- BarometricPressureWebServer
- UDPSendReceiveString
- UdpNtpClient
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino