ESP8266在接收udp数据包时出现问题。

问题描述 投票:0回答:1

我的WeMos D1 Mini正在运行一个脚本,如果它收到udp数据包中的某些字符串,它应该执行某些操作。

大多数时候它都能正常工作,但有时它却没有任何反应,通常只需等待几分钟或发送几次数据包即可。我的猜测是,它可能会进入某种深度睡眠。有时候唯一有用的就是重启它。

我试着实现了一个看门狗,但这并没有真正的工作(但这是一个单独的问题),我不确定它是否能解决这个问题.我通过Netcat发送数据包,WiFi强度是确定的(但不是很大).一切都在本地网络上。

请看一下我的代码,检查一下是否有错误improvements。

#include <ESP8266WiFi.h>
#include <WiFiUDP.h>

#define SSID "XXX"
#define PASSWORD "XXX"
#define PORT XXX

WiFiUDP udpServer;

char MESSAGE[] = "message";

void setup() {
  Serial.begin(9600);

  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);
  wifiStrength();

  udpServer.begin(PORT);

  delay(100);
}

void wifiStrength(){
  if (WiFi.status() != WL_CONNECTED) {
      Serial.println("no wifi, reconnecting...");
      delay(3000);
      WiFi.begin(SSID, PASSWORD);
    }
    long rssi = WiFi.RSSI();
    Serial.print("connected, RSSI:");
    Serial.println(rssi);
  }

void loop() {
  if (udpServer.parsePacket()) {
    char receiveBuffer[WIFICLIENT_MAX_PACKET_SIZE + 1];
    udpServer.read(receiveBuffer, sizeof(receiveBuffer) - 1);

    if (strstr(receiveBuffer, MESSAGE)) {
      Serial.println("do stuff...");
    } 
  }
}
arduino udp wifi esp32 arduino-esp8266
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.