Соедините два сообщения Arduinos через Ethernet UDP - PullRequest
0 голосов
/ 28 декабря 2018

Я программист на C # и PLC, но мне нужно работать на Arduino для моей компании.

У меня есть два Arduino MEGA и два щита Ethernet: (https://www.gotronic.fr/art-shield-ethernet-ef02029-23481.htm)

Я пытаюсьчтобы установить связь одного с другим.
РЕДАКТИРОВАТЬ: Моя цель: отправить цифровой и аналоговый сигнал от клиента к серверу.

Я попробовал пример кода примера (WebServer и WebClient), я изменилMAC-адрес, потому что они одинаковы в этом примере, влияют на IP-адрес, удаляют часть DHCP. Я могу видеть, что TX вел на моем клиенте Arduino, но на сервере Arduino не было индикатора RX. Я использую прямой RJ45кабель. Это нормально?

У вас есть какой-нибудь совет для меня, или вы можете помочь мне с помощью перерезанного кода?

Код клиента:

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

EthernetUDP Udp;
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x5C, 0x18};
IPAddress ip(192,168,1,15);
unsigned int localPort = 8888;

IPAddress remoteIP(192,168,1,16);
unsigned int remotePort = 8888;
EthernetClient client;

void setup(){
 Serial.begin(9600);
 Serial.println("****************");
 Serial.println("Serial OK");
 //Ethernet.init(10);
 Ethernet.begin(mac,ip);
 delay(1000);

 // Check for Ethernet hardware present
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
    while (true) {
      delay(1); // do nothing, no point running without Ethernet hardware
    }
  }

 if (client.connect(remoteIP, 8888))
 {
  Serial.println("Client was connected");
 }
 else
 {
  Serial.println("Client was not connected");
 }
 Serial.print("IP : ");
 Serial.println(Ethernet.localIP());
 Udp.begin(localPort);
}

void loop(){
  /*
 Udp.beginPacket(remoteIP, remotePort);
 Udp.println("Message UDP");
 Serial.println("Message UDP");
 Udp.endPacket();*/
 Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
 Udp.write("Hello world");
 Udp.endPacket();
 delay(2000);
}

Код сервера:

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

// Server MAC adress
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

// Server IP adress
IPAddress ip(192,168,1,16);

// local port to listen on
unsigned int localPort = 8888;

EthernetUDP Udp;

//buffer to hold incoming packet,
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];

void setup() {
  Serial.begin(9600);
  //Ethernet.init(10);
  delay(1000);
  // start the Ethernet and UDP:
  Ethernet.begin(mac,ip);
  delay(1000);
  Udp.begin(localPort);

}

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

    // read the packet into packetBufffer
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
}
else
{
  Serial.println("Didn't receive anything...");
  Serial.println(String(packetSize));
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...