Я программист на 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));
}
}