使用AT模式的透传,串口打印的数据包含+pd1,4,数据
打印的数据不是直接将数据打印出来,包含了+pd1,4,特殊字符,针对想要直接开机直接透传,打印数据且按照自主协议帧头的功能进行开发。
/*************SERVER***CLENIT**************** */
#include
#include
// 配置网络参数
const char* ssid = "ESP8266_UDP_SERVER";
const char* password = "12345678";
const IPAddress SERVER_IP(192, 168, 1, 100); // 服务器固定IP
const unsigned int SERVER_UDP_PORT = 8888; // 通信端口
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
const IPAddress CLIENT_IP(192, 168, 1, 101); // 客户端固定IP
const unsigned int CLIENT_UDP_PORT = 8888; // 通信端口
WiFiUDP Udp;
char packetBuffer[512]; // UDP接收缓冲区
/*************SERVER******************* */
void setup() {
Serial.begin(115200);
// 连接WiFi
// WiFi.begin(ssid, password);
//Wifi热点
WiFi.softAPConfig(SERVER_IP,gateway,subnet);
WiFi.softAP(ssid,password);
// Serial.print("Connecting to WiFi");
// Serial.printf("WIFI-ssid:%s;WIFI-password:%s;WIFI-Server_IP:%s;WIFI-Server_udp_port:%d;WIFI-client_IP:%s;WIFI-Client_udp_port:%d",ssid,password, SERVER_IP.toString(),SERVER_UDP_PORT,CLIENT_IP.toString(),CLIENT_UDP_PORT);
// Serial.println("\nConnected! IP: " + SERVER_IP.toString());
// 启动UDP服务
Udp.begin(CLIENT_UDP_PORT);
Serial.println("UDP server started on port " + String(CLIENT_UDP_PORT));
}
void loop() {
// 处理串口输入 (发送到客户端)
if (Serial.available()) {
String serialData = Serial.readStringUntil('\n');//截止符
Udp.beginPacket(CLIENT_IP, CLIENT_UDP_PORT);
// int W_len=Udp.write(serialData.c_str(),serialData.length());
Udp.write(serialData.c_str(),serialData.length());
Udp.endPacket();
// Serial.println("[Sent] " + serialData);
// Serial.println(W_len);
// Serial.println(serialData.length());
Serial.println(serialData);
}
// 处理UDP数据 (接收并输出到串口)
int packetSize = Udp.parsePacket();
// if(packetSize>0)
// Serial.println(packetSize);
if (packetSize) {
int len = Udp.read(packetBuffer, packetSize);
if (len > 0) {
packetBuffer[len] = '\0';
// Serial.println("[Received] " + String(packetBuffer));
// Serial.println(len);
Serial.println(String(packetBuffer));
}
}
}
/*************SERVER***CLENIT**************** */
#include
#include
// 配置网络参数
const char* ssid = "ESP8266_UDP_SERVER";
const char* password = "12345678";
const IPAddress SERVER_IP(192, 168, 1, 100); // 服务器固定IP
const unsigned int SERVER_UDP_PORT = 8888; // 通信端口
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
const IPAddress CLIENT_IP(192, 168, 1, 101); // 客户端固定IP
const unsigned int CLIENT_UDP_PORT = 8888; // 通信端口
WiFiUDP Udp;
char packetBuffer[512]; // UDP接收缓冲区
/**************client**************** */
// 配置网络参数
void setup() {
Serial.begin(115200);
// 连接WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected! IP: " + WiFi.localIP().toString());
// 启动UDP服务
Udp.begin(SERVER_UDP_PORT);
Serial.println("UDP client started. Target: " + SERVER_IP.toString());
}
void loop() {
// 处理串口输入 (发送到服务器)
int len = Serial.available();
if (len) {
String serialData = Serial.readStringUntil('\n');//截止符
Udp.beginPacket(SERVER_IP, SERVER_UDP_PORT);
// int W_len=Udp.write(serialData.c_str(),serialData.length());
Udp.write(serialData.c_str(),serialData.length());
Udp.endPacket();
// Serial.println("[Sent] " + serialData);
// Serial.println(W_len);
// Serial.println(serialData.length());
Serial.println( serialData);
}
// 处理UDP数据 (接收并输出到串口)
int packetSize = Udp.parsePacket();
// if(packetSize>0)
// Serial.println(packetSize);
if (packetSize) {
int len = Udp.read(packetBuffer, packetSize);
if (len > 0) {
packetBuffer[len] = '\0';
// Serial.println("[Received] " + String(packetBuffer));
// Serial.println(len);
Serial.write(packetBuffer,len);
}
}
}
分别下载两个esp8266-01里面,双esp8266上电,自动建立链接,由Server串口发送数据,通过UDP发送至client的串口,就可以看到server发送的数据了。