2011-10-12 36 views
2

シリアルポート経由で回線と通信していて、書き込みタイムアウトを設定する必要があるのだろうかと疑問に思っていましたか?c#SerialPort WriteTimeout使用?

誰かが使用する理由の例を挙げることができますか?私は読み取りタイムアウトのポイントを理解しています(たとえば、私はコマンドを送信した、250ms以内に応答を受け取るべきです)が、本当に書き込みタイムアウトの理由が分かりません。本当に古いコンピュータでは、文字列を送るのに非常に長い時間がかかりますか?

ありがとうございました。

+0

デバイスがハンドシェイクを長時間オフにしていることを検出します。それが問題かどうかはあなた次第です。 –

答えて

3

ハードウェアハンドシェイクを使用している場合、適切なハンドシェイクピンの状態に達するまでバイトは書き込まれません。だから、他のデバイスが、それがより多くのデータの準備ができていることを知らせ、最後にバッファがいっぱいであることを知らせる、またはデバイスが単にオフラインであることを知らせるのを待つことができます。ハードウェアのハードシェイクをオフにしている場合、またはシリアルポート(RTSからCTS)でジャンパを外した場合、タイムアウトが発生する可能性があるのは、デバイスにバイトを書き込んで、ライン上で送信できることだけです。最終的に出力バッファをいっぱいにしてブロックします(非同期ioを使用していないことを前提とします)。ドライバがバッファを十分に速くクリアできない場合は、タイムアウトが短すぎると書き込みがタイムアウトする可能性があります。

+0

素晴らしい!助けてくれてありがとう。 – john

関連する問題