hhhhhc12q3 2023-03-25 18:48 采纳率: 100%
浏览 45
已结题

esp8266与esp8266-01通过AT指令连接并正常通信应该怎么做

这是一个esp8266的代码
我想用另一个esp8266-01通过AT指令连接并正常通信应该怎么做,弄了好久了可以连接上但是一直无法通信


#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "1213ESP826601";             //AP的SSID(WiFi名字)
const char *password = "345678910";            //AP的密码
int led = 14;                                 //设置指示灯io,D5
int state_led=2;                              //IO2(D4),板载led,作为判断是否有设备连接
IPAddress sta_client;                        //保存sta设备的ip地址
/****************UDP设置项 *****************/
unsigned int read_Port = 8082;     //监听端口
unsigned int send_Port = 8083;     //发送端口
char readdata[512];                 //数据缓存
WiFiUDP Udp;                        //定义udp
void setup()
{
  Serial.begin(115200);
  Serial.println("");
  init_IO(); //初始化需要的IO引脚
  init_AP();
  Udp.begin(read_Port);             //UDP设置监听指定端口
}
void loop()
{
  //digitalWrite(led, 1);
  int gotoAP=WiFi.softAPgetStationNum();    //获取当前连接到AP的设备数量  
  if (gotoAP==0) 
  {
    digitalWrite(state_led, 1); //如果没有设备连接,熄灭WiFi状态LED
  }
  else
  {
    digitalWrite(state_led, 0); //如果有设备连接,点亮WiFi状态LED
    Udp_Handler(Read_Udp());
  }
}

//初始化io
void init_IO()
{
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  pinMode(state_led, OUTPUT);       //设置指定io为输出模式
  digitalWrite(state_led, 1);       //初始化为高电平,关闭灯状态,板载led为低电平点亮
}

//初始化AP信息
void init_AP()
{
  WiFi.mode(WIFI_AP);                         //设置为AP模式
  WiFi.softAP(ssid, password);                //配置AP信息,并开启AP

  //默认IP为192.168.4.1 , 这里我自定义设置AP的ip段
  IPAddress softLocal(192,168,1,1);        //IP地址,用以设置IP第4字段
  IPAddress softGateway(192,168,1,1);      //IP网关,用以设置IP第3字段
  IPAddress softSubnet(255,255,255,0);
  //配置自定义的IP信息
  WiFi.softAPConfig(softLocal, softGateway, softSubnet);
  IPAddress myIP = WiFi.softAPIP();           //用变量myIP接收AP当前的IP地址
  Serial.println(myIP);                       //打印输出myIP的IP地址
}

/*自定义函数
  将接收的数据,以String类型返回,方便分析处理
*/
String Read_Udp() {
  String data = "";
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    sta_client = Udp.remoteIP();
    memset(readdata, 0x00, sizeof(readdata));
    Udp.read(readdata, 511);
    Udp.flush();
    for (int i = 0; i < packetSize; i++) {
      data += readdata[i];
    }
    Serial.println(data);
  }
  return data;
}
/************自定义函数,对接收数据分析处理************/
void Udp_Handler(String data) {
  if (data != "") {
    if (data == "打开") {
      digitalWrite(led, 1);
      myPrint("打开", 0);
    }
    else if (data == "关闭") {
      digitalWrite(led, 0);
      myPrint("关闭", 0);
    }
    else if (data == "请求") {
      myPrint("收到", 0);
    }
  }
}
/*自定义函数
  封装数据发送功能,方便调用
  第一个参数,使用String类型作为发送内容
  第二个参数,a为真,指定发送,对发送方返回数据,a为假,以保存的ip发送数据
*/
void myPrint(String data, bool a) {
  if (a) {
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
  } else {
    Udp.beginPacket(sta_client, send_Port);
  }
  Udp.print(data);
  Udp.endPacket();
}
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-25 22:15
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持