вызов перегруженного 'println(WiFiClient*&)' неоднозначен

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <StreamString.h>
#include<PubSubClient.h>
const char* ssid = "Lenovo";
const char* password = "94725047";

void setup () {

  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);
    Serial.println("Connecting..");

  }
 Serial.println(WiFi.localIP());
}

void loop() {

  if (WiFi.status() == WL_CONNECTED) { //Проверка статуса подключения WiFi

    HTTPClient http;  //Объявляем объект класса HTTPClient

    http.begin("http://pulkitk1.000webhostapp.com/blink.bin"); //Укажите место назначения запроса
    int httpCode = http.GET();                                                                  //Отправить запрос

    if (httpCode > 0) { //Проверьте возвращаемый код

      WiFiClient * stream = http.getStreamPtr();   //Получаем полезную нагрузку ответа на запрос
      Serial.println(stream);                     // Распечатать полезную нагрузку ответа

    }

    http.end();   //Закрыть соединение

  }

  delay(30000);    //Отправлять запрос каждые 30 секунд

}

, 👍0

Обсуждение

Что происходит с Serial.println(*stream);?, @Dmitry Grigoryev


1 ответ


1

В объекте Serial нет метода для печати экземпляра WiFiClient. Класс WiFiClient не реализует Printable, как, например, класс IPAddress. Никакой другой метод print или println не подходит для печати экземпляра WiFiClient.

Необходимо скопировать байты из stream в Serial.

редактирование: Вы передаете указатель на печать, и существуют версии печати, принимающие указатели, но ни одна из них не совпадает в точности, поэтому сообщение об ошибке «неоднозначно».

,