Linuxコマンドラインからシリアルから読み取る


51

Linuxコマンドラインを使用してテストしたいシリアルポートデバイスがあります。

コマンドをシリアルポートに送信するためにsttyとechoを使用することはできますが、デバイスが応答するとき、シリアルポートから送られてくるものを読み取る方法がありません。私は使っている

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

デバイスにコマンドを送信します。デバイスは動作し、300ミリ秒で応答を返します。コマンドラインを使用してコンソールにその応答を印刷するにはどうすればよいですか?

回答:


56

出力と同じです。例:

cat /dev/ttyS0

または:

cat < /dev/ttyS0

最初の例は、シリアルポートを開き、そのポートから読み取ったものをそのstdout(コンソール)に中継するアプリです。2番目は、シリアルポートトラフィックを任意のアプリに向けるシェルです。この特定のアプリは、そのstdinに中継しますstdout

トラフィックの可視性を向上させるために、16進ダンプを好む場合があります。

od -x < /dev/ttyS0

またはsocat stdio /dev/ttyS0
プスタントン

使用しているデバイスにコマンドを送信しました。コマンドは次のとおりです。echo "1GAINS" | sudo tee / dev / ttyUSB0 ....そして、それに応答して、同じメッセージを繰り返す無限ストリームを取得しています。何か案は?デバイス自体は、一度送信したコマンドをエコーバックする必要がありますが、ここでは奇妙なフィードバックを受け取っているようです。
user391339

シリアルアナライザーを使用して、フィードバックが「実際の」ものではないことを確認しました。デバイスはコマンドを1回だけエコーバックしますが、上記のコマンドを使用すると、ターミナル出力で途方もない無限の繰り返しが発生します。
user391339

バイナリデータで動作しますか?
ランチ

@ransh-回答の16進ダンプ部分を参照してください。最終的には、その特定のバイナリデータを理解するか、リバースエンジニアリングできる人間またはツールが必要になります。
ジルカハニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.