PlatformIOのMinitermでANSIエスケープシーケンス制御できない?
ESP32やArduinoで遊んでいて、moniter(Miniterm)にエスケープシーケンス制御できないので、2時間ほどはまっていた。
ひょんなことから解決してしまった。そんなんしらんがなー。
同じ愚かなドハマリを他の人にしてほしくないので、メモ程度に書いておきます。
PlatformIOのplatformio.iniでmonitor_filters
を設定してください。
これだけです。
monitor画面をよく見ると、書いとるがな。しらんがなー!!
賢明なあなたは、monitor_filters
をGoogle先生にすぐに聞きに行ってください。
## しらんがな
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
どうやら、次のフィルター設定があるようですねぇ。
- colorize
- debug
- default
- direct
- hexlify
- log2file
- nocontrol
- printable
- send_on_enter
- time
で、初期設定はdefaultになっているようです。なので、ANSIエスケープシーケンスの文字制御がMinitermでできていなかった。ということになります。しらんがな。
かいけつ
direct
次の設定をplatformio.iniへ追加してから、monitorをみてください。エスケープシーケンス制御が有効になっていると思います。
log2fileとtimeは要らなければ削除してください。
monitor_filters = log2file, time, direct
default
\033
や\x1b
などは、「ESC」のようにmoniterに表示されて文字は制御されません。
monitor_filters = log2file, time, default
debug
よくわかりませんが、送受信で何を送ったのかrawデータが見れるようです。
monitor_filters = log2file, time, debug
その他
次の説明は本家のページの英訳です。(DeepL先生監修)
ESP32, ESP8266のエクセプションデコーダフィルタ名は次の表には書いてません。
Name | Description |
---|---|
colorize | 受信時とエコー時で異なる色を適用 |
hexlify | データの16進数表示(各文字のコードポイント) |
log2file | 現在の作業ディレクトリにあるファイル "platformio-device-monitor-%date%.log "にデータを記録する。 |
nocontrol | CR+LFを含むすべてのコントロールコードの削除 |
printable | すべての非ASCII文字の10進コードを表示し、ほとんどの制御コードを置き換えます。 |
time | 新しい行ごとにミリ秒単位のタイムスタンプを追加する |
send_on_enter | ENTERでデバイスにテキストを送信 |
さいごに
なんで、今頃になって気づいたんやろ。しらんかった。。
調べるの疲れた。👍
少しでもお役に立てれば何よりです。
(了)