• ESP8266 tcp透传AP+STA


    AP

    建立WIFI,接受STA连接,串口数据和TCP互传 

    #include <ESP8266WiFi.h>
      
    const char *ssid = "esp8266_666";
    const char *password = "12345678";
    WiFiServer server(8266);
    void setup()
    {
      Serial.begin(115200);
      Serial.println();
      Serial.print("Setting soft-AP ... ");
        
    IPAddress softLocal(192,168,1,1);  
    IPAddress softGateway(192,168,1,1);
    IPAddress softSubnet(255,255,255,0);
      
    WiFi.softAPConfig(softLocal, softGateway, softSubnet);  
    WiFi.softAP(ssid, password);
        
    IPAddress myIP = WiFi.softAPIP();
      Serial.print("AP IP address: ");
      Serial.println(myIP);
     server.begin();
     Serial.printf("Web server started, open %s in a web browser
    ", WiFi.localIP().toString().c_str());
      
    }
        float roll, pitch, heading;
    void loop()
    {
     WiFiClient client = server.available();
     if (client)
      {
        Serial.println("
    [Client connected]");
        while (client.connected())
        {
     
     //  将串口数据打印给TCP
      if(Serial.available()){
        size_t len = Serial.available();
        uint8_t sbuf[len];
        Serial.readBytes(sbuf, len);
       
        client.write(sbuf, len);
        delay(1);
         
        }
    
        
        roll=roll+10; pitch=pitch+10; heading=heading+10;
        Serial.print("Orientation: ");
        Serial.print(heading);
        Serial.print(" ");
        Serial.print(pitch);
        Serial.print(" ");
        Serial.println(roll);
    
         delay(1000);
             
      // 将TCP数据打印给串口
          if (client.available())
          {
           //  String line = client.readStringUntil(13);// arduino换行符号  ascll码 13
            String line = client.readStringUntil('
    ');
            Serial.println(line);    
              
          }
        }
        delay(1);
     
      //  client.stop();
        Serial.println("[Client disonnected]");
      }
      
     }
      
    

      

      

    STA

    连接WIFI,连接AP,串口数据互传

    #include <ESP8266WiFi.h>
    
    const char* ssid = "esp8266_666";
    const char* password = "12345678";
    
    const char* host = "192.168.1.1";
      const int httpPort = 8266;
      
    IPAddress staticIP(192,168,1,22);
    IPAddress gateway(192,168,1,1);
    IPAddress subnet(255,255,255,0);
    
    WiFiClient client;
    
    
    void setup(void)
    {
      Serial.begin(115200);
      Serial.println();
    
      Serial.printf("Connecting to %s
    ", ssid);
      WiFi.config(staticIP, gateway, subnet);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());
    
    
      
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
    
      
    }
    
    void loop() {
      
     // client.print("abc
    ");
     // delay(1000);
       while(client.available()){
       //int newLine = 13; 
       // String line = client.readStringUntil(13);
        String line = client.readStringUntil('
    ');
        Serial.println(line);
      }
      
      }
    

      

    测试实例 发送  abc/秒,串口打印输出

    #include <ESP8266WiFi.h>
    
    const char* ssid = "esp8266_666";
    const char* password = "12345678";
    
    const char* host = "192.168.1.1";
      const int httpPort = 8266;
      
    IPAddress staticIP(192,168,1,22);
    IPAddress gateway(192,168,1,1);
    IPAddress subnet(255,255,255,0);
    
    WiFiClient client;
    
    
    void setup(void)
    {
      Serial.begin(115200);
      Serial.println();
    
      Serial.printf("Connecting to %s
    ", ssid);
      WiFi.config(staticIP, gateway, subnet);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());
    
    
      
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
    
      
    }
    
    void loop() {
      
    
        
    
        client.print("abc
    ");
        delay(1000);
       while(client.available()){
        String line = client.readStringUntil('
    ');
        Serial.print(line);
      }
      
      }
    

      

      

  • 相关阅读:
    C#实现任意源组播与特定源组播
    张灵甫此人性格偏激,赌性重,喜欢冒险,做事不留后路,更适合担任中下层军官(要自己掌控着自己的命运)
    Delphi 中 断言 Assert 用法
    桌面程序阻止Windows关机(使用Message.Result取得DefWindowProc API函数的返回值,非常重要)
    Asp.net vnext的IIS部署
    Asp.net vNext 学习3
    EasyUI的后台界面
    C#框架
    前端分离规范
    AngularJS html5Mode与ASP.NET MVC路由
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/10903606.html
Copyright © 2020-2023  润新知