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