web-dev-qa-db-ja.com

シリアルポートからのデータの受信

RS232シリアルポートから端末に、ファイルへのディレクティブを使用してデータを受信したい。それはかなり簡単なはずです。

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

その前に、デバイス(生化学分析装置)のパラメーターと一致するようにパラメーターを構成しました。

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

つまり、

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

しかし、端末には何も表示されません。空白です。何が問題ですか?

2
Br. Sayan

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は96008N2を表示しています。それが大丈夫だといいのですが。しかし、何も受信しません-1ビットではありません。アナライザーは、「機器は送信要求としてENQを送信しましたが、ホストは15秒以内にACKまたはNAKを返しませんでした。(リンクタイムアウト)」と言います。

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

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

自分で何かを書くことは可能ですが、それは簡単なことではありません。いくつかのPythonサポート [〜#〜] astm [〜#〜] があり、 Perlスクリプト を試すことができます。

SOには post とASTMに関する情報もあります。

6
NZD