web-dev-qa-db-ja.com

GNU画面でCR / LFを切り替える方法は?

Screenを使用して、シリアルコンソールからテキストを読みます。問題は、出力に改行のみが含まれているように見えますが、キャリッジリターンは含まれていないため、\ r表示は次のようになります...

Line1
     Line2
          Line3

この問題を修正するパッチはありますか?

24
Patrick

stty onlcrをお試しください。

man page は、出力で改行をキャリッジリターン/改行のペアに変換することを示しています。これは、必要なようです。

3

onlcrは翻訳用ですoutgoing えーlイネス c結婚 r帰る。

stty -F /dev/ttyS0 inlcrincoming改行を改行に変換します。画面の起動後に別の端末から実行すると、起動時に画面がリセットされるのを防ぐことができます。残念ながら、これは問題を変更するだけです。その後、改行はなく、改行のみが返されます。

端末に\n\rを受信できるようにappend着信改行に戻るオプションが必要です。これはシリアルデバイスshouldに出力されているものです。最初の場所。送信データに対してこれを行うonlretオプションがあるようですが、この場合は必要と思われるinlretオプションはありません。

私はまったく同じ問題を抱えていますが(picocomを使用しています)、標準の修正を見つけようと何日もググって行ってきましたが、誰も持っていないようです。そこには\nのみを出力し、\r\nを出力することができないシリアルデバイスがいくつかあります。それらすべてが2人のLinuxユーザーにのみ属しているとは信じません。何を与える!?

25
tacos

Pyserialに付属するminiterm.pyプログラムを使用すると、改行がcrlfとして解釈されます。これは最も完全な機能を備えたターミナルエミュレータではありませんが、単純なシリアルデバイスとやり取りするために機能します。

使用構文(OSX上):

miniterm.py /dev/tty.usbserial-XXXXXX 115200

XXXXXXを、システムでデバイスが起動するときの任意のものに置き換えます。

8
Peter E.

私の場合はうまくいきました:stty -F /dev/ttyACM0 -icrnl

シリアルが暗黙的にCRをNLに変換するように設定されていたためです。このコマンドはそれを元に戻します。 icrnlの前のマイナス文字に注意してください。

2
jejdacz