シリアルデバイスからCRのみを受信したときに画面を1行下に下げて最初から始めるにはどうすればよいですか?

シリアルデバイスからCRのみを受信したときに画面を1行下に下げて最初から始めるにはどうすればよいですか?

私はscreen:を使用してシリアルポートに接続していますscreen /dev/cu.usbserial-A703XAOG。もう一方の端にあるデバイスは、個々の行にのみキャリッジリターンを送信します。スクリーンは、キャリッジリターンが受信されたときに行の先頭でのみ始まり、行の下には降りません。したがって、出力の最後の行は次の出力行で上書きされます。

シリアルポートの設定を変更できicrnl、キャリッジリターンを改行に変換します。これで、次の出力行を書き込む前に画面が1行下に移動しますが、改行のみを受信した場合は最初から再開しません。

Ctrl-A、+を使用してCtrl.termcapファイルをダンプしました.。私はtermcapを読んで、次のことを学びました。

端末に次の行の最初の列に移動するコマンドがある場合は、そのコマンドをnw(newline)として指定できます。

源泉

これは私の現在の~/.screenrcファイルです。

termcap SC nw=^M

これはSCダンプされた.termcapファイルの名前と一致します。

これは私が期待した効果をもたらさなかった。たぶんtermcapコマンドは正しい方法ではありませんか?

シリアルデバイスからCRのみを受信したときに画面を1行下に下げて最初から始めるにはどうすればよいですか?

編集する:

sudo stty -f /dev/cu.usbserial-A703XAOG -a画面がシリアルポートに接続されたときの出力は次のとおりです。

speed 9600 baud; 0 rows; 0 columns;
lflags: -icanon -isig iexten -echo echoe echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
        -extproc
iflags: -istrip -icrnl -inlcr -igncr -ixon -ixoff -ixany -imaxbel -iutf8
        -ignbrk brkint -inpck ignpar -parmrk
oflags: -opost -onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd -hupcl clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
        erase = ^?; intr = ^C; kill = ^H; lnext = ^V; min = 100;
        quit = ^\; reprint = ^R; start = ^Q; status = ^T; stop = ^S;
        susp = ^Z; time = 2; werase = ^W;

編集する:

この問題を解決できるソフトウェアがあることを知っています。パテ「各CRの暗黙のLF」設定を有効にして追加する必要があります。連続物「独立CRをCRLFとして解釈する」を有効にする必要があります。しかし、私の質問は、特にscreenこれが私が現在のシリアルポートに接続するために使用するソフトウェアなので、これについてです。

編集する:

Screenは制御シーケンス(源泉)。 「単語改行モード」(とも呼ばれる)を設定する必要があります。新しいラインモデル)。これは、パラメータ値が20の設定モード制御シーケンスを使用して実行する必要がありますESC [ 20 h

この制御シーケンスを画面にどのように渡すことができますか?

答え1

私にとって効果があるように見えるのは、見つかった改行モードのエスケープシーケンスを画面に送信し、キャリッジリターンを改行に変換するsttyコマンドを提供して、画面上の擬似ttyを操作することです。 ptyを見つけるにはps a

16947 pts/4    Ss+    0:00 screen -S myscreen /dev/ttyS0

その後、コマンドを発行します。

pty=/dev/pts/4
stty -F $pty  ocrnl
echo -en '\e[20h' >$pty

関連情報