gpt4 book ai didi

c - beginPacket 上的 UDP 错误

转载 作者:行者123 更新时间:2023-11-30 16:36:27 29 4
gpt4 key购买 nike

当我向任何 IP 发送 UDP 包时,我的 arduino 上出现错误。当我尝试向 _targetIp 发送数据包时出现 2 个问题:

  1. 当从 loop() 调用时,udpSender.endPacket() 永远卡住(在第二次调用时,第一次调用没问题)
  2. 当从 setup() 调用时,udpSender.beginPacket(...) 返回 0

代码:

IPAddress _targetIp(192, 168, 59, 250);
int _sendPort = 4321;
EthernetUDP _udpSender;

(...)

void sendUpd(int pinIndex, int value)
{
// if I wrote something like this:
// udpSender.beginPacket(_udpSender.remoteIP(), _sendPort)
// then is all fine
if (_udpSender.beginPacket(_targetIp, _sendPort) != 1)
{
Serial.println("socket error!");
return;
}

_udpSender.write(pinIndex);
_udpSender.write("=");
_udpSender.write(value);

int sendState = _udpSender.endPacket(); // hang forever when called from "loop()"
if ( sendState != 1 )
{
// enters with 0 as "sendState" when called from "setup()"
Serial.print("send error: ");
Serial.println( sendState );
}
}

谁能帮我解释一下吗?

最佳答案

创建的解决方案:

  1. _updSender.endPacket() 调用并未卡住。读取 (digitalRead(52)) 中特定数字的代码会导致奇怪的 react 。
  2. 我不知道怎么做,但arduino会检查主机是否还活着。如果主机无法访问,_udpSender.endPacket() 返回 0。

解释:将 IP 解析为 MAC 地址失败。所以错误不是来自 UDP(OSI 第 4 层)。错误发生在数据链路层 (=2) 并解释了第 2 点。

关于c - beginPacket 上的 UDP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48482477/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com