从Arduino发送UDP

时间:2017-05-17 10:16:00

标签: arduino udp ethernet

我正在努力解决UDP数据包的传输问题。我正在使用" Wireshark"作为传入数据包的控件。 UDP数据包的IP地址是我固定的PC配置的IP权限吗?我改变了我的剧本,但我仍然没有收到任何包裹:/

谢谢!

这是我的代码:

//Version 1.05

//necessary libraries
#include <SPI.h>
#include <Ethernet2.h>
#include <EthernetUdp2.h>

//Pin settings
#define CTD 19

//Network Settings
byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0xEC, 0xAB };  //set MAC Address Ethernet Shield (Backside)
byte ip[]  = { XXX, XXX, X, X };                      //set IP-Address
byte gateway[] = { XXX, XXX, X, X };                  //set Gateway
byte subnet[]  = { 255, 255, 255, 0 };                //set Subnetmask


//local UDP port to listen on
unsigned int localPort = 5568;

//Recipient IP
IPAddress RecipientIP(XXX, XXX, X, X);

//Recipient UDP port
unsigned int RecipientPort = 8888;

//Buffer for sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];

//EthernetUDP instance
EthernetUDP Udp;

//CTD data
int incomingData = 0;


void setup()
{
   //Start Ethernet
  Ethernet.begin(mac, ip);

  //Start UDP
  Udp.begin(localPort);

  //for debug only
  Serial.begin(9600);

  //Serial baud rate for CTD
  Serial1.begin(1200);

  //Version 1.05
Serial.print("Version 1.05");

  //CTD
  pinMode(CTD, INPUT);
}

void loop()
{

//If CTD is sending
if (Serial1.available())
{
  //read incoming data
  incomingData = Serial1.read();

  //for debug only
  Serial.print("Data: ");
  Serial.println(incomingData, BIN);
}

//Send UDP packets
int packetSize = Udp.parsePacket();
  if (packetSize) 
  {

    //Debug only
    Serial.print("Packet");
    // read the packet into packetBufffer
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);

    // send to the IP address and port
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.write(incomingData);
    Udp.endPacket();
  }
}

1 个答案:

答案 0 :(得分:0)

安装Netcat。然后在收件人计算机上使用以下语法: sudo nc -l 8888 启动arduino,然后应该在外壳上看到输出。