Screenを使用して、シリアルコンソールからテキストを読みます。問題は、出力に改行のみが含まれているように見えますが、キャリッジリターンは含まれていないため、\ r表示は次のようになります...
Line1
Line2
Line3
この問題を修正するパッチはありますか?
stty onlcr
をお試しください。
man page は、出力で改行をキャリッジリターン/改行のペアに変換することを示しています。これは、必要なようです。
onlcr
は翻訳用ですoutgoing んえーlイネス c結婚 r帰る。
stty -F /dev/ttyS0 inlcr
はincoming改行を改行に変換します。画面の起動後に別の端末から実行すると、起動時に画面がリセットされるのを防ぐことができます。残念ながら、これは問題を変更するだけです。その後、改行はなく、改行のみが返されます。
端末に\n\r
を受信できるようにappend着信改行に戻るオプションが必要です。これはシリアルデバイスshouldに出力されているものです。最初の場所。送信データに対してこれを行うonlret
オプションがあるようですが、この場合は必要と思われるinlret
オプションはありません。
私はまったく同じ問題を抱えていますが(picocomを使用しています)、標準の修正を見つけようと何日もググって行ってきましたが、誰も持っていないようです。そこには\n
のみを出力し、\r\n
を出力することができないシリアルデバイスがいくつかあります。それらすべてが2人のLinuxユーザーにのみ属しているとは信じません。何を与える!?
Pyserialに付属するminiterm.pyプログラムを使用すると、改行がcrlfとして解釈されます。これは最も完全な機能を備えたターミナルエミュレータではありませんが、単純なシリアルデバイスとやり取りするために機能します。
使用構文(OSX上):
miniterm.py /dev/tty.usbserial-XXXXXX 115200
XXXXXXを、システムでデバイスが起動するときの任意のものに置き換えます。
私の場合はうまくいきました:stty -F /dev/ttyACM0 -icrnl
シリアルが暗黙的にCRをNLに変換するように設定されていたためです。このコマンドはそれを元に戻します。 icrnl
の前のマイナス文字に注意してください。