2018年11月1日木曜日

ESP32 にて謎のエラー

ちょっと前に ESP32 を使った Blynk アプリを作りました。
久しぶりに動かすことになったのですが一部仕様追加があったので修正してコンパイルしようとしたら謎のエラーが><;

Traceback (most recent call last):
  File "/home/kiya/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 34, in
    import serial
ImportError: No module named serial
「WiFi.h」に対して複数のライブラリが見つかりました
使用済:/home/kiya/.arduino15/packages/esp32/hardware/esp32/1.0.0/libraries/WiFi
未使用:/usr/local/arduino-1.8.7/libraries/WiFi
exit status 1
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。

え〜。WiFi.h が複数あったっていいじゃん!で、調べてみるとこのメッセージは関係ないようです。

ESP32 ( ESP-WROOM-32 , M5Stack )自分的 トラブルシューティング まとめ

警告をすべてオンにして再コンパイルしても何も変わらず…で、エラーメッセージをしげしげ見るとどうやら esptool.py がエラーを出しているよう。

ということで下記を実行して無事コンパイルできました。

$ sudo apt install python-pip
$ pip install pyserial

Ubuntu 17.10 を 18.04 にアップグレードしたのですがどうも調子が悪いのでクリーンインストールしたのでその際必要なモジュールが不足してしまったようです。

Visual Studio Code にて C++ の { を単独行にしない

大昔から C++ のプログラムを書いている人間だと { を単独の行に書きたくなります。うろ覚えですが確か MFC(Microsoft Foundation Library) のソースがそうなっていたと思います。

私も以前はそう書いていたのですが、最近の多くの言語は { を生業分の末尾に書くことが多いようです。

C++ なんてほとんど使わなくなっていたのですが、最近 IoT なるものに手を染めまして、マイコンとかではやはり速度とサイズの問題で C++ が多く、使う機会が増えました。

Visual Studio Code は Microsoft製なので、自動書式整形を使うと { が単独行になってしまいます。これを変える方法はないかなと思って調べたところ設定をちょっといじれば変わるということがわかりましたので備忘録です。

C_Cpp.clang_format_fallbackStyle: "Visual Studio",

となっているところを

C_Cpp.clang_format_fallbackStyle: "Google",

なんてやってやるといい感じになります。

C_Cpp.clang_format_fallbackStyle の説明のところには下記のような記述があります。

Name of the predefined style used as a fallback in case clang-format is invoked with style "file" but the .clang-format file is not found. Possible values are Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, none, or use "{key: value, ...}" to set specific parameters, e.g.: "{ BasedOnStyle: LLVM, IndentWidth: 8 }"

Google翻訳に機械翻訳させると下記のようです。

スタイル "file"でclang-formatが呼び出されたが、.clang形式のファイルが見つからない場合のフォールバックとして使用される定義済みスタイルの名前。 指定可能な値は、Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit、noneです。たとえば、「{BasedOnStyle:LLVM、IndentWidth:8}」などの特定のパラメータを設定するには「{key:value、...}」を使用します。

参考リンク

clang-format について日本語でざっくり書かれているページ
ClangFormatスタイルオプション

英語だけど詳しく書かれたページ
CLANG-FORMAT STYLE OPTIONS