[0;32m PlatformIOのシリアルモニターで文字化け
最近、ログを出力するのにESP_LOGI()を使うことがある
Espressif Systemsのサンプルソースを参考にすることが多いため
ESP_LOGI()
PlatformIOを使っている場合、以下のディレクトリあたりに、esp_log.hがあるはず
といっても、Arduino.hをインクルードしていれば、ESP_LOGI()が使えるはず
%userprofile%\.platformio\packages\framework-arduinoespressif32\cores\esp32\
ログをよくみると、先頭と末尾に意味不明な文字が現れる
エンジニアなら、すぐにピンとくる
[Escape][0;32m というような化け方をしているときは、「色の指定」が適切に処理されていない可能性が高い、と
気持ち悪い&せっかくならカラー表示させたい!
PlatformIOのシリアルモニターのおさらい
現状、PlatformIOのシリアルモニターを使っている
問題解決のために、軽くおさらいする
[PlatformIO: Serial Monitor]を押すと
以下のパスにあるアプリケーションが起動する
%userprofile%\.platformio\penv\Scripts\platformio.exe device monitor
ターミナルアプリを新規で起動するときは、多少時間がかかる印象
(設定次第で解決するかもしれない)
上記のコマンドを適宜、好みのターミナル(コマンドプロンプトなど)に入力して、シリアルモニターアプリを実行することもできる
ただし、終了するのを忘れていると、シリアル通信によるファームウェアの書き込みができなくなる
PlatformIOアプリ内で行っていれば、そのあたりを適切に対処してくれる(はず)
PlatformIOで開発していても、他のシリアルモニターアプリを使ってもよい(Arduino IDEやM5 Bunerなど)
カラー対応(文字化けの対処)
PlatformIOのSerial Monitorを使う場合は、rawモードにすると解決するようだ
今回、以下の2つの方法をみつけた
コマンドの引数に渡す
--raw というパラメーターを指定するとよいようだ
以下のようなコマンドを実行する
platformio.exe device monitor --raw --baud 115200
--rawの意味
--raw
Disable encodings/transformations of device output
設定ファイルによる方法
platformio.iniにmonitor_rawを追加する
まだ、実際には確認できていない
; platformio.ini
monitor_raw = yes
こちらを参考にした
結果
無事に文字化けがなくなり、色が表示されるようになった
「情報は緑色」、「警告は黄色」、「エラーは赤色」で表示されるようになり、視認しやすくなった
Logging libraryには「ログのタグ付け機能」や「レベルの設定機能」があるようだ
また、Espressif IDF Monitorの方が相性がよさそうな印象
次回、そのあたりを見てみようと思う
Espressif IDF Monitorについての記事は以下