esp8266 как telnet-сервер

Тема в разделе "Arduino & Shields", создана пользователем BigBadBo, 20 мар 2016.

  1. BigBadBo

    BigBadBo Нуб

    Загружаю данный код из образцов, точка появляется, подключаюсь, а при попытке подключиться к порту через putty, выбрасывает. Причем порты все просканировал - все закрыты, будто сервер и вообще не создался. Что такое может быть?

    Код (C++):
    /*
      WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266*/

    #include <ESP8266WiFi.h>

    //how many clients should be able to telnet to this ESP8266
    #define MAX_SRV_CLIENTS 1
    const char* ssid = "1234567890";
    const char* password = "123456789";

    WiFiServer server(23);
    WiFiClient serverClients[MAX_SRV_CLIENTS];

    void setup() {
      Serial1.begin(115200);
      WiFi.begin(ssid, password);
      Serial1.print("\nConnecting to "); Serial1.println(ssid);
      uint8_t i = 0;
      while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500);
      if(i == 21){
        Serial1.print("Could not connect to"); Serial1.println(ssid);
        while(1) delay(500);
      }
      //start UART and the server
      Serial.begin(115200);
      server.begin();
      server.setNoDelay(true);
     
      Serial1.print("Ready! Use 'telnet ");
      Serial1.print(WiFi.localIP());
      Serial1.println(" 23' to connect");
    }

    void loop() {
      uint8_t i;
      //check if there are any new clients
      if (server.hasClient()){
        for(i = 0; i < MAX_SRV_CLIENTS; i++){
          //find free/disconnected spot
          if (!serverClients[i] || !serverClients[i].connected()){
            if(serverClients[i]) serverClients[i].stop();
            serverClients[i] = server.available();
            Serial1.print("New client: "); Serial1.print(i);
            continue;
          }
        }
        //no free/disconnected spot so reject
        WiFiClient serverClient = server.available();
        serverClient.stop();
      }
      //check clients for data
      for(i = 0; i < MAX_SRV_CLIENTS; i++){
        if (serverClients[i] && serverClients[i].connected()){
          if(serverClients[i].available()){
            //get data from the telnet client and push it to the UART
            while(serverClients[i].available()) Serial.write(serverClients[i].read());
          }
        }
      }
      //check UART for data
      if(Serial.available()){
        size_t len = Serial.available();
        uint8_t sbuf[len];
        Serial.readBytes(sbuf, len);
        //push UART data to all connected telnet clients
        for(i = 0; i < MAX_SRV_CLIENTS; i++){
          if (serverClients[i] && serverClients[i].connected()){
            serverClients[i].write(sbuf, len);
            delay(1);
          }
        }
      }
    }
     
  2. Mestniy

    Mestniy Гуру

    Как подключил?
     
  3. Sandro331k

    Sandro331k Нуб

    Вы подключаетесь к той точке, что создал ESP? Это неверно. Вы должны создать точку доступа сами, а ESP к ней подключится.
     
  4. Navigator

    Navigator Нуб

    Не знаю, на сколько актуально решение этого вопроса, вдруг кому нибудь поможет в данном примере в начале запускается Serial.begin(115200);, а далее везде пишем в Serial1.print(); замените все Serial1 на Serial
     

    Вложения: