2009-04-07 14 views
0

シリアルポート通信C#windowsアプリケーションを使用しています。私はポートからデータを取得し、それを操作してシリアルポートを通して書き込むプログラムを書いた。シリアルポートデバイスと通信するときに正しくタイムアウトするにはどうすればいいですか?

私の質問は、ユニットの電源が入っていないか、電源が切れているか、ユニットがコマンドに長時間応答していない場合です。私のプログラムでは、通常の実行フローのために書いています。しかし、長い時間応答がない場合、プログラムは長い間待っています。私はタイマーを使用しましたが、正しく動作しません。

誰でも教えてください。

答えて

0

次の2つのオプションが持っている:

  1. をあなたはからと何も設定された期間に受信されない場合は、想定することができ、データ用のシリアルポートをリッスンすることができ、データを生成する必要があるデバイスを持っている場合それはオフラインです

  2. シリアルポート経由でデバイスに定期的にデータを送信し、例外が発生した場合、デバイスがオフラインであることがわかります。

4

C#で "SerialPort"オブジェクトを使用している場合は、ReadTimeOutとWriteTimeOutのプロパティを使用できます。

0

あなたが使用しているケーブルがDTR/DSRがクロスされている場合、つまり、プログラムが起動するとDTRを上げ、他のデバイスのDSRが高くなりDTRが上がりますあなたのDSRを上げます。

未知のケーブルを使用していて、制御できないデバイスと通信する場合は、.Timeoutを使用する必要があります。

関連する問題