【发布时间】:2017-05-16 15:01:05
【问题描述】:
我正在尝试通过 UDP 发送传感器数据。目前,我正在为 UDP 数据包的“打包”而苦苦挣扎。它说当我尝试发送它时没有声明“incomingData”。 我将不胜感激任何建议。 代码如下。 谢谢你:)
//Version 1.012
//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, 1 }; //set Subnetmask
//local UDP port to listen on
unsigned int localPort = 4000;
//Recipient IP
IPAddress RecipientIP(127, 0, 0, 1);
//Recipient UDP port
unsigned int RecipientPort = 4444;
//Buffer for sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
//EthernetUDP instance
EthernetUDP Udp;
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.012
Serial.print("Version 1.012");
//CTD
pinMode(CTD, INPUT);
}
void loop()
{
//If CTD is sending
if (Serial1.available())
{
//read incoming data
int incomingData = Serial1.read();
//for debug only
Serial.print("Data: ");
Serial.println(incomingData, BIN);
}
//Send UDP packets
int packetSize = Udp.parsePacket();
if (packetSize) {
// 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();
}
}
【问题讨论】:
-
我认为 if
(packetSize)在您尝试发送数据时首先在if (Serial1.available())之前执行,因此incomingData没有被声明,但您正尝试在if (packetSize)中使用它。因此你得到了错误。
标签: arduino udp declaration send