Parsing Arduino通过带有胡言乱语的以太网解析UDP数据包
内置以太网的Arduino Yun通过以太网连接到PC,以太网通过WiFi连接到我的路由器。设置为从同一网络上的另一台PC接收UDP数据包。那台电脑使用netcat发送这些数据包 Arduino-Yun打印收到的数据包,但它也打印一些胡言乱语 我很确定这与之前传输的缓冲区中的剩余数据有关。这是我发送的: 然后我在netcat上写了一个并按下enter键,Arduino得到如下结果: 这是我的代码: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
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方法的实现是错误的。