我的程序在调用"parsePacket()"后是继续运行,还是等到收到数据?

Does my program continue after calling 'parsePacket()' or does it wait till it receives data?

本文关键字:程序 数据 运行 继续 parsePacket 我的 调用      更新时间:2023-10-16

所以,我目前不在家里,所以我不能自己尝试。我有ESP8266微控制器,可以通过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 %dn",
        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: %sn", incomingPacket);
      if (strcmp(incomingPacket, "LED") == 0) {
          Serial.printf("Turning LED on.");
          digitalWrite(0, HIGH);
          delay(1000);
          Serial.printf("Turning LED off.");
          digitalWrite(0, LOW);
      }
   }
}

该文档没有表明此呼叫正在阻塞,实际上,当没有数据包可以解析时,有无条件的delay(10)可以停止循环旋转。

我认为我们可以认为这是无障碍的,您也应该考虑这样的延迟。

在文档中,它说如果没有包装,它将返回0,因此它是无障碍的。否则它将始终返回一些正数。