シリアルポートからデータを受信する


2

RS232シリアルポートからデータを端末に送信し、ファイルへの指示を受け取りたい。それはかなり単純なはずです。

cat /dev/ttyS0
cat /dev/ttyS0 > file.txt

その前に、デバイスのパラメーター(Biochemistry Analyzer)と一致するようにパラメーターを構成しました。

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb

すなわち

  1. ボーレート-9600
  2. パリティ-なし
  3. ビット-8ビット
  4. ストップビット-2

しかし、私は端末で何も受け取りません。ただ空白です。何が問題ですか?

回答:


6

最初にMinicomを試して、シリアルポートが返すものを確認してください。でインストールするsudo apt-get install minicom

次のように起動します(ttyS0の場合):

sudo minicom -D /dev/ttyS0

Minicom内から(を使用してctrl-A P)通信パラメーターを設定できるため、それらが正しいことを確認できます。

デバイスが特定のプロトコルを使用している場合、通信を開始するコマンドが必要になる場合があります。そのため、ユーザーマニュアルをご覧ください。

デバイスがハードウェアハンドシェイクを使用するように設定されている可能性があります。可能な場合は、オフにします(少なくとも最初は)。

オフにできない場合は、同様に設定する必要があります。Minicomでは、これはの下にctrl-A Oありserial port setupます。

シリアル通信をデバッグするためにMinicomを頻繁に使用しましたが、最適に機能することがわかりました。

OPからさらに情報を受け取りました。

実験機器(Cobas C311)はASTMプロトコルを使用しています。インターフェースで、「ホストに送信」をクリックするだけで、ASTMレコードの束が送信されます。それらをファイルで受け取るだけです。他の設定はありますか?データの取得を開始するコマンドは何ですか?...およびファイルにデータを保存する方法は?

適切なパラメーターを選択しました。Minicomは9600 8N2を表示しています。大丈夫だと思います。しかし、何も受け取らない-シングルビットではありません。アナライザーは、「機器は送信要求としてENQを送信しましたが、ホストは15秒以内にACKまたはNAKを返しませんでした。(リンクタイムアウト)」

デバイスはASTMプロトコルを使用します。デバイスは、<ENQ>データの送信を開始する準備ができたことを示す信号としてキャラクターを送信します。
これはminicom、他の端末プログラムを使用して受信できるものではありません。このプロトコルをサポートする適切なアプリケーションソフトウェアが必要です。

このプロトコルをサポートするアプリケーションについては、必ずユーザーマニュアルを読み、インストールディスク(存在する場合)および製造元のWebサイトを確認する必要があります。
彼らがこのデバイスのアプリケーションをサポートしていない場合、私は驚くでしょう。それらが何かを提供する場合は、Windowsアプリケーションまたはサンプルコードとライブラリが考えられます。

自分で何かを書くことは可能ですが、簡単ではありません。ASTMの Pythonサポートがいくつかあり、試してみられるPerlスクリプトがあります。

SOには、ASTMに関するいくつかの情報を掲載した投稿もあります。


ありがとうございました!実験機器(Cobas C311)はASTMプロトコルを使用しています。インターフェースで、「ホストに送信」をクリックするだけで、ASTMレコードの束が送信されます。それらをファイルで受け取るだけです。他の設定はありますか?データの取得を開始するコマンドは何ですか?...およびファイルにデータを保存する方法は?
Br。サヤン

適切なパラメーターを選択しました。Minicomは9600 8N2を表示しています。大丈夫だと思います。しかし、何も受け取らない-シングルビットではない。アナライザーは、「機器は送信要求として<ENQ>を送信しましたが、ホストは15秒以内に<ACK>または<NAK>を返しませんでした。(リンクタイムアウト)
Br。サヤン

1
お使いのデバイスは、実際にデータを理解し、コンピュータを期待しているようにそれは聞こえる返信 -それは望んでENQ / ACKのおそらくコンピュータが待機していることを確認し、交換を。Ctrl + Fを押してACKバイトを送信してみてください。
grawity

1
デバイスは実際にENQ / ACK交換を待機し、メッセージを受信するまでメッセージを送信しません。NZDが提案したnrComm Libを介してメッセージを受信することに成功しました。しかし、メッセージをファイルに自動的に保存する必要があるため、目的には役立ちませんでした。@grawityが示唆しているように、Ctr + Fも機能していません。別の方法を理解する必要があります:副次的に、RS232ケーブルが適切に機能するかどうかを確認する方法を提案してもらえますか?
Br。サヤン

2
@ Br.Moksha本当に必要な場合は、TxDとRxD(9ピンsub-Dコネクター(DE9)のピン2と3)を短絡してケーブルをテストできます。(ハードウェアフロー制御をオフにすることを確認しctrl-A Oserial port setupminicomの中で)。その後、minicomで入力したすべての文字がループバックされます。ハードウェアフロー制御もテストする場合は、RTSとCTSをショートさせる必要があります(9ピンSub-Dのピン8と9)。参照してくださいウィキペディア:RS-232シリアルポートと、このチュートリアルナショナルインスツルメンツから
NZD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.