Parsing Arduino通过带有胡言乱语的以太网解析UDP数据包

Parsing Arduino通过带有胡言乱语的以太网解析UDP数据包,parsing,arduino,udp,buffer,ethernet,Parsing,Arduino,Udp,Buffer,Ethernet,内置以太网的Arduino Yun通过以太网连接到PC,以太网通过WiFi连接到我的路由器。设置为从同一网络上的另一台PC接收UDP数据包。那台电脑使用netcat发送这些数据包 Arduino-Yun打印收到的数据包,但它也打印一些胡言乱语 我很确定这与之前传输的缓冲区中的剩余数据有关。这是我发送的: 然后我在netcat上写了一个并按下enter键,Arduino得到如下结果: 这是我的代码: char udp_buffer[UDP_TX_PACKET_MAX_SIZE]; void

内置以太网的Arduino Yun通过以太网连接到PC,以太网通过WiFi连接到我的路由器。设置为从同一网络上的另一台PC接收UDP数据包。那台电脑使用netcat发送这些数据包

Arduino-Yun打印收到的数据包,但它也打印一些胡言乱语

我很确定这与之前传输的缓冲区中的剩余数据有关。这是我发送的:

然后我在netcat上写了一个并按下enter键,Arduino得到如下结果:

这是我的代码:

char udp_buffer[UDP_TX_PACKET_MAX_SIZE];

void setup() {
  Bridge.begin();       
  Udp.begin(9911); 
  Serial.begin(9600);
  if (!rf95.init())
    Serial.println("init failed");     
rf95.setTxPower(20, false);

IPAddress IP(192, 168, 1, 10);

}

void loop() {
   int udp_received = Udp.parsePacket();
   if (udp_received) {
      Udp.read(udp_buffer, UDP_TX_PACKET_MAX_SIZE);
      Serial.println(udp_buffer);



  }
}

您只发送5或6个字符的测试\r\n。剩下的是随机记忆内容

的返回值应为接收字符的计数,但错误,并且在成功时始终返回1

您可以使用BridgeUdp.available获取计数

空穴环{ 如果Udp.parsePacket{ int udp_received=udp.available; 字符udp_缓冲区[udp_接收+1]; Udp.readudp_缓冲区,接收到Udp_; udp_缓冲区[udp_接收]='\0'; Serial.printlnup_缓冲区; } }
我怀疑udp_缓冲区是nul终止的。谢谢你Juraj。Udp.available成功了。最后我得到了实际的数据包大小。几乎不可能发现parsePacket方法的实现是错误的。