LoginSignup
3
1

More than 1 year has passed since last update.

【解決】PlatformIOのMinitermでANSIエスケープシーケンス制御できなかった件について

Last updated at Posted at 2021-07-17

PlatformIOのMinitermでANSIエスケープシーケンス制御できない?

ESP32やArduinoで遊んでいて、moniter(Miniterm)にエスケープシーケンス制御できないので、2時間ほどはまっていた。

ひょんなことから解決してしまった。そんなんしらんがなー。
同じ愚かなドハマリを他の人にしてほしくないので、メモ程度に書いておきます。

PlatformIOのplatformio.iniでmonitor_filtersを設定してください。

これだけです。
monitor画面をよく見ると、書いとるがな。しらんがなー!!
賢明なあなたは、monitor_filtersをGoogle先生にすぐに聞きに行ってください。

image.png

 しらんがな

--- 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

image.png

default

\033\x1bなどは、「ESC」のようにmoniterに表示されて文字は制御されません。

monitor_filters = log2file, time, default

image.png

debug

よくわかりませんが、送受信で何を送ったのかrawデータが見れるようです。

monitor_filters = log2file, time, debug

image.png

その他

次の説明は本家のページの英訳です。(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でデバイスにテキストを送信

さいごに

なんで、今頃になって気づいたんやろ。しらんかった。。
調べるの疲れた。👍
少しでもお役に立てれば何よりです。

(了)

3
1
0

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
3
1