DOBON.NET DOBON.NETプログラミング掲示板過去ログ

シリアル通信でのタイムアウト処理

環境/言語:[VB2008]
分類:[.NET]

お世話になります。
次のようにシリアル通信で送信後にレスポンスを確認をするプログラムを作成
しましたが、レスポンスが無い場合、一番下の行で止まってしまいます。
例えば、10秒待ってもレスポンスが無い場合は次の処理を行うようにするには
どのようにすればよいのでしょうか?
よろしくお願いします。

Dim port As SerialPort = New SerialPort("COM1", 9600, Parity.Even, 8, StopBits.One)

PLCFlg = 0

port.Open()
port.DtrEnable = True
port.RtsEnable = True

'通信開始コマンド送信
Dim Startreq As String = "343335320D"
port.WriteLine(Startreq)

'レスポンス確認
Dim res As String = port.ReadLine()
■No25968に返信(たくさんの記事)
> 例えば、10秒待ってもレスポンスが無い場合は次の処理を行うようにするには
> どのようにすればよいのでしょうか?

  Port.ReadTimeout = 10000

  としてみたら、どうでしょう。

  多分、Port.ReadLineのところで、Exceptionが発生します。
  同期方式での読み書きなので、それでよいかと・・・
  要は、Try 〜 Catch で、タイムアウトを拾わせるように
  すればよいかと。

  非同期方式なら、もっと複雑になりますが・・・

以上。
  
Try 〜 Catch で下の行を入れたところでしました。
ありがとうございました。


>   Port.ReadTimeout = 10000
>
>   としてみたら、どうでしょう。
>
>   多分、Port.ReadLineのところで、Exceptionが発生します。
>   同期方式での読み書きなので、それでよいかと・・・
>   要は、Try 〜 Catch で、タイムアウトを拾わせるように
>   すればよいかと。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板