gpt4 book ai didi

c++ - 我的程序是在调用 'parsePacket()' 后继续还是等到它接收到数据?

转载 作者:行者123 更新时间:2023-11-28 01:24:16 27 4
gpt4 key购买 nike

所以,我目前不在家,所以我不能自己尝试。我有一个 ESP8266 微 Controller ,可以通过 UDP 与其通信。一切正常,但我想知道我的代码(下面)是否真的在等待客户端发送数据,或者它是否一直在检查。换句话说:“loop()”函数是一直被调用,还是调用一次然后在“Udp.parsePacket()”处等待客户端发送数据?

很抱歉问这个问题,因为这可以很快解决,但我将有一段时间没有机会这样做了,但我仍然想继续编写我的代码。提前致谢。

代码:

#include <WiFiUdp.h>

WiFiUDP Udp

void setup() {
...
}

void loop() {

int packetSize = Udp.parsePacket();

if (packetSize) {
Serial.printf("Received %d bytes from %s, port %d\n",
packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(incomingPacket, 255);

if (len > 0)
{
incomingPacket[len] = 0;
}

Serial.printf("UDP packet contents: %s\n", incomingPacket);
if (strcmp(incomingPacket, "LED") == 0) {
Serial.printf("Turning LED on.");
digitalWrite(0, HIGH);
delay(1000);
Serial.printf("Turning LED off.");
digitalWrite(0, LOW);
}
}
}

最佳答案

The documentation没有指示此调用正在阻塞,实际上有一个无条件的 delay(10) 来在没有要解析的数据包时停止循环旋转。

我认为我们可以认为这意味着调用是非阻塞的,您也应该考虑这样的延迟。

关于c++ - 我的程序是在调用 'parsePacket()' 后继续还是等到它接收到数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688587/

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