arduino esp8266透传代码

 //这理用的是2560 的主板串口比较多用的是串口1如果是UNO的主板可以用串口0 但是要在刷软件的时候把串口0上的线去掉要不刷不进去!

#include <ESP8266.h>                  //库文件

#define SSID        "SSID"            //WIFI 名
#define PASSWORD    "PWD"             //WIFI 密码
#define HOST_NAME   "192.168.2.9"     //连接服务器的 IP
#define HOST_PORT   (60000)           //连接服务器的 端口
ESP8266 wifi(Serial1);               //串口1 和ESP8266 对接透传
int ledPin = 7;                       //小灯1
int ledPin2 = 6;                       //小灯2
void setup(void)                      //程序初始化
{
pinMode(ledPin,OUTPUT);               
pinMode(ledPin2,OUTPUT);
    Serial.begin(9600);             //初始化串口0 
    Serial1.begin(9600);             //初始化串口1    这个地方 要先在ESP 8266 上设置一下 波特率  设置成 9600  默认 应该是 115200 
    Serial.flush();                   //不知道
    Serial.print("setup begin\r\n");  //打印初始化状态把?
    Serial.print("FW Version:");      //打印 ESP版本
    Serial.println(wifi.getVersion().c_str());  //不知道 
       if (wifi.setOprToStationSoftAP()) {          //应该是运行模式 这个应该是 clent+AP 模式
        Serial.print("to station + softap ok\r\n");  //设置模式成功
    } else {
        Serial.print("to station + softap err\r\n"); //设置模式失败
    }
     if (wifi.joinAP(SSID, PASSWORD)) {             //连接无线路由
        Serial.print("Join AP success\r\n");        //加入网络成功
        Serial.print("IP:");                        //显示IP地址
        Serial.println( wifi.getLocalIP().c_str());       //显示IP地址
    } else {
        Serial.print("Join AP failure\r\n");         //加入网络失败
    }
    if (wifi.disableMUX()) {  
        Serial.print("single ok\r\n");
    } else {
        Serial.print("single err\r\n");
    }
    Serial.print("setup end\r\n");
}
void loop(void)
{
    uint8_t buffer[128] = {0};          //初始化 buffer 这个缓存
    if (wifi.createTCP(HOST_NAME, HOST_PORT)) {   // 连接WIFI网络
        Serial.print("create tcp ok\r\n");//创建网络是否成功
      } else { 
        Serial.print("create tcp err\r\n");}  //创建网络失败
     delay(200);
     char *hello = "Hello, this is client!"; //发送到上位机的数据
    wifi.send((const uint8_t*)hello, strlen(hello)); //发送到上位机
    uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); //上位机传过来的数据
       if (len > 0) {                   //判断是否有数据到达
       Serial.print("Rec:[");          //输出一个固定开头
        char (*inChar) = buffer;        //把缓存中的数据存到一个变量中
        Serial.print( inChar);         //打印缓存中的内容
       //if ( *inChar == 'H')
       if(strcmp(inChar,"HOME")==0)     //判断上位机传过来的数据是否等于 HOME 
        { Serial.print("start");      //如果满足上面的如果打印这个 start 
         digitalWrite(ledPin, HIGH);   //点亮这个小灯
         }         
       //if ( *inChar == "STOP")
      else if(strcmp(inChar,"STOP")==0)  
       {Serial.print("STOP");
        digitalWrite(ledPin2, HIGH);
        }
        else {Serial.print("NUMBER"); }  //如果上位机传来的数据 不满足上面两个如果 就执行打印 NUMBER 单词
        
        Serial.print("]\r\n");    //打印一个尾部字符
   }    
    if (wifi.releaseTCP()) {                //关闭网络连接
        Serial.print("release tcp ok\r\n");     //关闭成功 
    } else {
        Serial.print("release tcp err\r\n");    //关闭失败
    }
    delay(5000);                                //延迟5秒
   digitalWrite(ledPin,LOW);                    //熄灭小灯 1
     digitalWrite(ledPin2,LOW);                  //熄灭小灯2
}

猜你喜欢

转载自blog.csdn.net/zfzwy/article/details/69947046