ESP8266 TCP-соединение WiFiClient проблема

Я использую плату ESP8266 01 для отправки некоторых данных через TCP на сервер в локальной сети. Мой код:

#include <ESP8266WiFi.h>

const char* ssid     = "ssid";
const char* password = "pas";

const char* host = "192.168.1.103";

void setup() {
  Serial.begin(115200);
  delay(10);

  // Wi-Fi соединение

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

   delay(5000);

  Serial.print("connecting to ");
  Serial.println(host);

  // Используйте класс WiFiClient для создания TCP-соединений
  WiFiClient client;
  const int port = 8888;
  if (!client.connect(host, port)) 
  {
    Serial.println("connection failed");
    return;
  }

}

void loop() {

  while(Serial.available() == 0)
  {
    //ждем серийных данных arduino
  }

   while(Serial.available())
  {
    // отправляем данные на сервер
    client.print(Serial.read());
  }
}

После взлома кода в Arduino IDE я получаю сообщение об ошибке:

In function 'void loop()':
espwifitcp1:57: error: 'client' was not declared in this scope
     client.print(Serial.read());
     ^
exit status 1
'client' was not declared in this scope

Похоже, что если я объявлю WiFiClient client; внутри функции setup(), к нему нельзя будет получить доступ извне. Я правильно понимаю задачу? Я пытался объявить объект вне функций setup() и loop(), но получил еще больше ошибок. Есть предложения?

, 👍2


2 ответа


Лучший ответ:

3

Вы объявили WiFiClient client; только в рамках setup(). Переместите его объявление в глобальную область, поместив его над объявлением void setup()

,

Или напишите «WiFiClient» вместо «WifiClient» X_X., @qräbnö


-1

в заголовок включить WifiClient.h

,

ESP8266WiFi.h включает WiFiClient.h, @Juraj