Как написать http-ответ от HttpClient на последовательный монитор с помощью ESP32 (Wemos Lolin32)?
С помощью моей платы ESP32 Wemos Lolin32 я хотел бы отправить запрос http GET на адрес «http://www.arduino. cc/asciilogo.txt", прочитайте текстовый файл и распечатайте его на последовательном мониторе.
Вопрос: Почему текстовый файл по сути не записывается на последовательный монитор? Как этого можно достичь? Нужно ли мне какое-то преобразование символа?
Я использую код, аналогичный коду из этого примера https://www.arduino.cc/en/Tutorial/HttpClient . По сути, код можно свести к этому минимальному примеру:
#include <WiFi.h>
#include <HttpClient.h>
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.println("Connecting to WiFi..");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(".");
}
Serial.println("Connected to the WiFi network");
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("SETUP FINISHED");
}
void loop() {
Serial.println("Connecting to httpClient");
HttpClient httpClient;
httpClient.get("http://arduino.cc/asciilogo.txt");
while (httpClient.available()) {
char c = httpClient.read();
//Serial.print(c);
Serial.write(c);
}
}
Ожидаемый результат: Я хочу увидеть символы из txt-файла (https:/ /www.arduino.cc/asciilogo.txt) в последовательном мониторе.
Фактический результат: Соединение с Wi-Fi может быть установлено. На последовательном мониторе отображаются либо знаки вопроса, либо странные символы.
Я проверил скорость, в коде и на мониторе она одинакова. Я пытался изменить это значение, но это не помогло.
@Mckunz, 👍0
2 ответа
Лучший ответ:
При переключении с HttpClient на HTTPClient и использовании полезных данных String = http.getString(); Serial.println(полезная нагрузка); Я могу добиться ожидаемого результата.
это http://arduino.cc/asciilogo.txt
. без www. www перенаправляется на https. вы можете проверить это из браузера
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
Я отредактировал URL, результат тот же., @Mckunz
Serial.write(c);
, если вычитаете
необработанный байт, тонеобработанный
записываете.
print` преобразует число в текст, @JurajСервер также кодирует содержимое с помощью gzip. Ему нужно добавить заголовок Accept-Encoding:identity., @gre_gor
К сожалению, это не работает., @Mckunz
Да, я изменил его на Serial.write(c);, @Mckunz
Это довольно странно. Serial.write(c) и Serial.print(c) выдают один и тот же результат., @Mckunz
При переключении с HttpClient на HTTPClient и использовании полезных данных String = http.getString(); Serial.println(полезная нагрузка); Я могу добиться ожидаемого результата., @Mckunz
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - [Из обзора](/review/low-quality-posts/43008), @Michel Keijzers
@MichelKeijzers, ссылки нет. это правильный URL-адрес для использования в рассматриваемом эскизе, @Juraj
@Юрай ... извини, я ошибаюсь; Я предполагал, что ответом является сама ссылка. Вместо этого проголосовал за сейчас :-), @Michel Keijzers