2012-04-04 25 views
0

私はRS232ソフトウェアフロー制御(別名XON/XOFF)に関する一般的な質問があるRS232ソフトウェアフロー制御

.NET実装(とnativのWin32 APIの)ボーテ時間である、WriteTimeout/ReadTimeoutというプロパティを定義しますその後、通信が延期されたとみなされます。

これは私の問題ではありません。送信すると、5バイトの文字列をデバイスに伝えることができますが、期待どおりにWriteTimeoutが表示されません。これはどのように実装されていますか私がソフトウェアフロー制御に関して知っていることは、受信バッファがいっぱいになったときにXOFFを設定することです。再度受信する準備ができたらXOnします。

しかし、私が見ている振る舞いから、デバイスがXONを送信し、送信した5バイトの情報を処理した後、対応するイベントを生成するための情報をウィンドウに作成していると思われます。

したがって、2線式RS232実装でXONを送信するタイミングは?バッファがいっぱいで受信を再開した場合のみ。または、私たちが処理したすべてのチャンクの後に受信するために「まだ準備ができている」ことを伝えるために?

実装方法

お気軽に&を事前に送信してください! Corelgott

+0

具体的には何を実装していますか?あなたはソフトウェアを書くかハードウェアを設計していますか? –

答えて

0

は(あなたの受信バッファが空であるか、またはそれに近い)は、データを受信する準備ができているいつでもXONを送信します。より多くの受信データを受け入れることができない場合(受信バッファが完全またはほぼそうである場合)いつでもXOFFを送信してください。このプロセスは、Wikipedia software flow controlページに記載されています。

+0

ウィキを指してくれてありがとう。 "しかし:もう片方の端はXOFFコードを受信し、送信を中断します。最初の端がデータを再び受け入れる準備ができたら、XONを送り、もう片方の端は転送を再開します。このコンテキストでは、XOFFが送信された場合にのみXONを送信する必要がありますか? OR:コントローラがデータを処理するたびにXONを送信しますか?ホストは "abcdef"を送信します。クライアントはXONで応答します。ホストは "ghijk"を送信します。クライアントはXONで応答しますか? – Corelgott

+0

もう一方の端をあらかじめ抑制していない限り、 'XON'を送る必要はありません。しかし、 'XON'を定期的に送信してノイズが 'XOFF'と解釈され、通信が停止するのを防ぐことができます。 –