MeshTalos-Client/managed_components/espressif__arduino-esp32/libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
2025-12-03 14:20:11 +08:00

76 lines
1.8 KiB
C++

/*
* This sketch sends random data over UDP on a ESP32 device
*
*/
#include <WiFi.h>
#include <NetworkUdp.h>
// WiFi network name and password:
const char *networkName = "your-ssid";
const char *networkPswd = "your-password";
//IP address to send UDP data to:
// either use the ip address of the server or
// a network broadcast address
const char *udpAddress = "192.168.0.255";
const int udpPort = 3333;
//Are we currently connected?
boolean connected = false;
//The udp library class
NetworkUDP udp;
void setup() {
// Initialize hardware serial:
Serial.begin(115200);
//Connect to the WiFi network
connectToWiFi(networkName, networkPswd);
}
void loop() {
//only send data when connected
if (connected) {
//Send a packet
udp.beginPacket(udpAddress, udpPort);
udp.printf("Seconds since boot: %lu", millis() / 1000);
udp.endPacket();
}
//Wait for 1 second
delay(1000);
}
void connectToWiFi(const char *ssid, const char *pwd) {
Serial.println("Connecting to WiFi network: " + String(ssid));
// delete old config
WiFi.disconnect(true);
//register event handler
WiFi.onEvent(WiFiEvent); // Will call WiFiEvent() from another thread.
//Initiate connection
WiFi.begin(ssid, pwd);
Serial.println("Waiting for WIFI connection...");
}
// WARNING: WiFiEvent is called from a separate FreeRTOS task (thread)!
void WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
//When connected set
Serial.print("WiFi connected! IP address: ");
Serial.println(WiFi.localIP());
//initializes the UDP state
//This initializes the transfer buffer
udp.begin(WiFi.localIP(), udpPort);
connected = true;
break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
Serial.println("WiFi lost connection");
connected = false;
break;
default: break;
}
}