/dev/ttyACM0のUSBシリアル接続に接続しています。送信者のコードは\f
定期的に1文字を送信します。
print("----------------------------\n\r");
print("-- LED CONTROLLER 00.01 --\n\r");
print("----------------------------\n\r");
print("\n\f");
ただし、cat /dev/ttyACM0
コンソールで実行すると、出力が画面の上部から更新されるのではなく、画面の下にスクロールされます。
stty
私は(入力を介して)現在の設定を掘り下げ、stty -F /dev/ttyACM0 -a
次の出力を提供します。
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^A; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
stty --help
ページを読むとページフィード遅延(ff0
)が発生しますが、他の変更方法は表示されません。私も見つけました。このページこれは、FormFeed文字をこのように設定できますが、FormFeed=014
構文が私のsttyバージョン(stty --version
与えられたstty (GNU coreutils) 8.5
)では機能しないことを示しています。
WindowsのPuttyは正しい動作をしますが、Debian 6では動作に問題があります。端末がクリアされたときにページフィードを解釈するようにsttyを設定する方法を知っている人はいますか?
ベストアンサー1
この問題を解決するためにGNU sedは必要ありません(スクリプトが読みやすくなりますが)。最小スクリプトは次のとおりです(SolarisおよびOSXでテスト済み)。
sed -e 's/^L/^[[H^[[J/g'
ここで、およびは^L
改ページおよびエスケープ用^[
のテキスト制御文字です。 (エスケープ文字を挿入するには、最初に入力)を使用してファイルに挿入できます。controlLcontrol[vi
controlV
エスケープシーケンスは次の目的で使用されます。
- カーソルを開始位置に移動
^[[H
して - 明確なディスプレイ
^[[J
いくつかの注意:
- エスケープで行と列を提供する必要はありません
^[[H
(とにかく場所は次から始まります)。1、いいえ0)、そして - 画面が消えたら今後カーソルを移動するには、
2
エスケープにaが必要です。たとえば、^[[2J
ディスプレイ全体が消去されるためです。デフォルトは、^[[J
現在位置からディスプレイの終わりまで内容を消去することです。たとえば、一部の非標準端末では、ansi.sys
これらの区別は行われません。
一部の人々は、^L
bashが画面を消去するためにキーボードショートカットを使用することとPuTTYの説明に混乱しています^L
。control/Lを入力しても画面が消えないのはなぜですか?XTerm FAQから)。
追加資料: