2017-02-18 7 views
-1

ドアが開いているかどうかを監視する必要があります。ドアが閉まっている限り+ 5V DCを生成し続けるセンサがありますが、ドアが開かれると0Vに低下します。シリアルポートへの固定電圧の送信

これでセンサーの出力線をPCのシリアルポートに接続し、ポートを連続的にポーリングするプログラムを作成する必要があります。

私の考えでは、私の考えではボーレートなどのさまざまなシリアルI/Oパラメータは関係ありません。私が読んだバイトごとに、ドアが閉じているときに値が255(論理1)になると思っています。さもなければ、私はドアが開けられたと仮定します。この論理に欠陥がありますか?

私はSending a voltage to RS232を経由しました。それは、私はピン2(RX)にワイヤを接続する必要があるようです。しかし、シリアルポートが論理1を受信するためには、電圧は-3Vと-12Vの間である必要があるようです。私のセンサが生成する電圧は正の値なので、センサのワイヤをピン5(GND)に接続し、ピン2をグランドに接続すると思います。実際には、電圧を反転させた。これは動作しますか?

このロジックに欠陥がある場合は、電圧インバータを購入する必要があります。

最後に、マザーボードのシリアルポートのピン5に何も接続しないでください。明らかに、それはシャーシに接地することがハードワイヤードである。これは本当ですか?よろしく。

+0

プログラミングに関する質問ではないので、あなたの投稿はおそらくこのサイトのトピックではありません。また、あなたは間違った仮定を突きつけてしまいました。あなたが行った研究はほとんど何も間違っています。少なくとも「電圧インバータ」*ではなく、コンバータ(RS232へのロジック)が必要です。 – sawdust

+0

ありがとうございました。質問には2つの部分があります。プログラミング中に、ボーレートなどを心配する必要がありますか、または単にバイト後にバイトを読み続ける必要がありますか?また、私が持っているものがすべて最高または最低のときにコンバータが必要なのはなぜですか? – Peter

+0

RS-232は、文字ごとにフレーミング(開始ビットと停止ビット)を使用します。一定の電圧が入力フレーム/文字として検出されることはありません。適切な電圧レベルと極性を生成できる場合は、RxD入力のアイドル(マーク状態)とブレーク(スペース状態)を使用できます。 RS-232は信号レベル(通常+ 12Vと-12V)に正と負の両方の電圧を使用します。ゼロボルトは信号レベルとして使用されません。基本的なRS-232の知識です。 – sawdust

答えて

2

コメントのコメントと同様に、constant highは255バイトを生成しません。 GNDにGNDを接続し、+ 5 VdcをCTSピンに接続することで、これを実装します。このCTSピンは、HIGH/LOW状態を問い合わせることができます。 しかし、これはハックです、あなたは本当にいくつかのマイクロコントローラを使用する必要があります。

+0

* "+ 5VdcをCTSピンに接続しています...しかしこれはハックだけです..." * - これは動作しないハックです。定電圧(RS-232レンジの下側)は情報を伝えません。 – sawdust

+0

@sawdust CTSはデータピンではなく、HIGH/LOW状態(通常はフロー制御用)でしか照会できないピンです。 – idanp

+0

これはまさに私が探していたものです。ご助力ありがとうございます。あなたは私が正しい方向に見えるように助けました。私はCTSかDSRピンのどちらかを使うことができます。単純なioctl()呼び出しは私に希望の状態を与えることができます。よろしく。 – Peter

関連する問題