Отправка Широковещательного пакета UDP

The Kaban
Offline
Зарегистрирован: 28.09.2016

Здравствуйте!

Подскажите пожалуйста как можно отправить UDP широковещательный пакет.

Пробую сделать вот так:

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 177);
unsigned int localPort = 8888; 

EthernetUDP Udp;
 
void setup() {

  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
 
}
 
void loop() {
 
    Udp.beginPacket("192.168.0.255", "8881");
    Udp.write("hello");
    Udp.endPacket();
 delay(10);
}

Что-то не выходет, есть подазрение что в неправильном формате указал ip и port в

Udp.beginPacket

Подскажите пожалуйста где промах?

Спасибо!

 

Araris
Offline
Зарегистрирован: 09.11.2012
Может быть так сработает :
IPAddress broadcastIp(192, 168, 1, 255);
udp.beginPacket(broadcastIp,8881);

Поскольку

Syntax

UDP.beginPacket(remoteIP, remotePort); 

Parameters

remoteIP: the IP address of the remote connection (4 bytes)

remotePort: the port of the remote connection (int)

The Kaban
Offline
Зарегистрирован: 28.09.2016

Спасибо за помощь, разобрался!

Вот что получилось:

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 235);
unsigned char ip_sh[] = {192,168,0,255};
unsigned int port=8881;
unsigned int localPort = 8888; 

EthernetUDP Udp;
 
void setup() {
 
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
 
}
 
void loop() {
 
  Udp.beginPacket(ip_sh, port);
    Udp.write("hello");
    Udp.endPacket();
 delay(10);
}

Еще раз СПАСИБО!

The Kaban
Offline
Зарегистрирован: 28.09.2016

Здравствуйте!

Подскажите пожалуйста как правильно отправить данные.

Я делаю вот так:

void loop() {
char val = analogRead(analogPin);

   Udp.beginPacket(t, p);
    Udp.write(val);
    Udp.endPacket();

 delay(200);
}

И в место нормальных данных(цифр), получаю белиберду.(

В Sereal.print, это решается просто Serial.print(val,DEC);, а в моей ситуации как это решить?

P.S. Задача бередать данные с АЦП по средствам UDP.

Спасибо!

The Kaban
Offline
Зарегистрирован: 28.09.2016

Или переводить в DEC на принимающей стороне?

Araris
Offline
Зарегистрирован: 09.11.2012

analogRead() возвращает значение типа int, а Вы его в переменную типа char принимаете, это не есть хорошо.

The Kaban
Offline
Зарегистрирован: 28.09.2016

Araris, Спасибо!

Согласен, не досмотрел, но суть от этого не сильно меняется.

Все равно идет белибирда(

Пока немогу понять как это решить(

СПС!

 

Araris
Offline
Зарегистрирован: 09.11.2012

Ещё можно попробовать

вместо

Udp.write(val);

отправлять как

Udp.print(String(val)); или Udp.write(String(val));

The Kaban
Offline
Зарегистрирован: 28.09.2016

Araris, Вроде помогло, Спасибо!