如何使用 ESP8266-12E 通过 UDP send/receive

How to send/receive via UDP with ESP8266-12E

嗯,我已经做过很多次 UDP send/receive。但现在我卡住了。

也许我遗漏了代码中的一些愚蠢错误,或者我正在使用的库中可能存在问题。无论如何,如果有人可以帮助,请看一下。

接收者代码

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char* ssid = "M3-L7";
const char* password = "mySmartChoice";
unsigned int localPort = 2390; 
char packetBuffer[255];
WiFiUDP Udp;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Udp.begin(localPort);
}

void loop() {
  delay(10);
  if (Udp.parsePacket()) {
    int len = Udp.read(packetBuffer, 255);
    if (len > 0) {
      packetBuffer[len] = 0;
      Serial.println(packetBuffer); 
    }
  }
}

sender/accesss点代码

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char *ssid = "M3-L7";
const char *password = "mySmartChoice";
unsigned int localPort = 2390; 

WiFiUDP Udp;
void setup() {
    delay(1000);
    Serial.begin(115200);
    WiFi.softAP(ssid, password);
  Udp.begin(localPort);
}

void loop() {
 Udp.beginPacket("192.168.4.1", localPort);
 Udp.write("Hello");
 Udp.endPacket();
 delay(10);
}

好吧,我希望 "Hello" 被重复打印 :D.. 他们到达了他们连接的地步,但是已经结束了。

您可能想尝试在 Wifi.begin 之前将以下内容添加到您的接收器:

WiFi.mode(WIFI_STA);

这会将 Wifi 设置为站点(客户端)而不是接入点。您的代码没有执行此操作,因此很难确定发生了什么,特别是如果您正在重新使用之前在 AP 模式下编程为 运行 的设备。