RS232 シリアル ポートからターミナルにデータを受信し、ファイルにディレクティブを送信したいと考えています。これは非常に簡単なはずです。
cat /dev/ttyS0
cat /dev/ttyS0 > file.txt
その前に、デバイス (生化学分析装置) のパラメータと一致するようにパラメータを設定しました。
sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb
つまり
- ボーレート - 9600
- パリティ - なし
- ビット - 8 ビット
- ストップビット - 2
しかし、端末には何も表示されません。ただ空白です。何が問題なのでしょうか?
答え1
試すミニコムまずシリアルポートが何を返すか確認してみましょう。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 を示しています。問題ないことを願っています。しかし、何も受信していません。1 ビットも受信していません。アナライザは、「機器は送信要求として ENQ を送信しましたが、ホストは 15 秒以内に ACK または NAK を返しませんでした。(リンク タイムアウト)」と表示します。
このデバイスはASTMプロトコルデバイスは、<ENQ>
データ送信の準備ができたことを示す信号として文字を送信します。
これは、 または他の端末プログラムを使用して受信できるものではありませんminicom
。このプロトコルをサポートする適切なアプリケーション ソフトウェアが必要になります。
必ずユーザー マニュアルを読み、インストール ディスク (ある場合) と製造元の Web サイトで、このプロトコルをサポートするアプリケーションを確認してください。
このデバイス用のアプリケーション サポートがないとしたら驚きです。何か提供されている場合は、Windows アプリケーションか、サンプル コードとライブラリである可能性があります。
自分で何かを書くことも可能ですが、簡単ではありません。Pythonのサポートもあります。国際規格そして、Perlスクリプト試してみることができます。
SOには役職ASTM に関する情報をいくつか紹介します。