我的程序在调用"parsePacket()"后是继续运行,还是等到收到数据?
Does my program continue after calling 'parsePacket()' or does it wait till it receives data?
所以,我目前不在家里,所以我不能自己尝试。我有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,因此它是无障碍的。否则它将始终返回一些正数。
相关文章:
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 我的程序没有从文件中读取并输入数据
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 员工测试驱动程序数据结构
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 更改应用程序数据的路径
- 安卓中的Qt和应用程序数据存储
- 关系应用程序数据的并发更新
- 即使程序关闭,是否可以将程序数据保存在RAM中
- ReadProcessMemory/WriteProcessMemory 是否访问程序数据或代码
- Qt指定某些应用程序数据的位置
- C++编程:导航到用户文件以保存每个用户的应用程序数据
- 如何使用Visual C++应用程序的完整应用程序数据读取Minidump的应用程序数据
- 运行select语句时,Firebird ODBC驱动程序数据被截断
- 调用处理程序数据的垃圾收集
- 如何使用C++在RAD Studio XE6中存储Android应用程序数据/设置
- 本地程序到程序数据流的TCP/IP替代方案