4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M5Stack Basic/Gray + ArduinoHttpClient.h で 'HTTPClient' was not declared in this scope が発生したら

Last updated at Posted at 2020-05-10

ちゃんと理解できてないけど「なぜか動いた」系エントリーなので、解説を加えていたたげると大変ありがたいと思いつつ、同じようなことで困ってる方がもしいたらと思い公開したエントリーです。

Wi-Fi のみならず Ethernet や GSM(セルラー通信) でも HTTP 通信を簡単に実装できる ArduinoHttpClient.h ですが、M5Stack Basic/Gray にて利用しようとすると、以下のようなコンパイルエラーが発生します。

C:\Users\USERNAME\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp: In member function 'void M5Display::drawPngUrl(const char*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, double, uint8_t)':
Arduino\libraries\M5Stack\src\M5Display.cpp:543:3: error: 'HTTPClient' was not declared in this scope
   HTTPClient http;
   ^

Arduino\libraries\M5Stack\src\M5Display.cpp:545:7: error: 'WiFi' was not declared in this scope
   if (WiFi.status() != WL_CONNECTED) {
       ^

Arduino\libraries\M5Stack\src\M5Display.cpp:545:24: error: 'WL_CONNECTED' was not declared in this scope
   if (WiFi.status() != WL_CONNECTED) {
                        ^

Arduino\libraries\M5Stack\src\M5Display.cpp:550:3: error: 'http' was not declared in this scope
   http.begin(url);
   ^

Arduino\libraries\M5Stack\src\M5Display.cpp:553:19: error: 'HTTP_CODE_OK' was not declared in this scope
   if (httpCode != HTTP_CODE_OK) {
                   ^

Arduino\libraries\M5Stack\src\M5Display.cpp:559:3: error: 'WiFiClient' was not declared in this scope
   WiFiClient *stream = http.getStreamPtr();
   ^

Arduino\libraries\M5Stack\src\M5Display.cpp:559:15: error: 'stream' was not declared in this scope
   WiFiClient *stream = http.getStreamPtr();
               ^

(M5Stack 0.3.0, 0.3.1 にて確認)

原因と回避方法

これは M5Stack-Core-ESP32 に同梱されている HTTPClient.h が組み込まれてない事が要因であるため、以下のように

#include <M5Stack.h>
#include <HTTPClient.h>  # <= 追加した行

と明示することでコンパイルできるようになります。

解せぬ点。

よくわからないのが M5Stack\src\M5Display.cpp では #include <HTTPClient.h> と指定されていることから、 #include <M5Stack.h> の時点で include されても良さそうなのだが、同エラーが発生してしまう。解せぬ。

あとがき

解せぬよ。

EoT

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?