vb2005で受信関数を以下の作成しています。

vb2005で受信関数を以下の作成しています。
Private Sub r_SerialPort1_DataReceived(ByVal sender As Object, _
 ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
 Handles SerialPort1.DataReceived
 Dim tmp As Integer
 Try
  tmp = SerialPort1.BytesToRead '受信バイト数取得
SerialPort1.Read(s_RxBuff, s_RxCont, tmp) 'データ読込み
s_RxCont = s_RxCont + tmp '受信バイト数更新
 Catch ex As Exception
s_Status = c_ErrTRP 'ポートエラー(受信)
End Try
End Sub
この関数で割込みが入るのですが、tmp=の所でbreakし読出そうとしてSerialPort1をウォッチすると、
"ポートは閉じられています"と表示されていて、Catch方向に進むのですが、何故こんなことが起こるのでしょうか?
宜しくお願いします。

投稿日時 - 2010-05-13 17:16:00

QNo.5892519

困ってます

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

回答(2件中 1~2件目)

ANo.2

>Tryの後にtmpに格納する行でBreakpointを付けると、Breakします。これは、ポートが開いていてデー>タを受信したからだと思います。でも、その後STEPさせるとCatch方向になってしまうのです。何でこう>なるのでしょうか?

やっぱりポートが閉じられてるように思います。
実際Breakするのは、実行する前です。
ですから、Breakしたあと、Catchするのではないでしょうか?

投稿日時 - 2010-05-14 13:01:32

お礼

回答頂きまして、大変ありがとうございました。
受信処理以外にタイマ割込み処理がございまして、受信直後にタイマ割込みでポートを閉じる処理がありました。受信処理とタイマ割込みが衝突していました。タイマ割込みの時間をずらすと問題なく受信できました。ヒントをいただけて解決できました。ありがとうございました。

投稿日時 - 2010-05-17 17:40:17

ANo.1

ポートが開かれていないのでは

投稿日時 - 2010-05-13 19:03:31

補足

Tryの後にtmpに格納する行でBreakpointを付けると、Breakします。これは、ポートが開いていてデータを受信したからだと思います。でも、その後STEPさせるとCatch方向になってしまうのです。何でこうなるのでしょうか?

投稿日時 - 2010-05-13 19:50:28

お礼

回答頂きまして、大変ありがとうございました。
受信処理以外にタイマ割込み処理がございまして、受信直後にタイマ割込みでポートを閉じる処理がありました。受信処理とタイマ割込みが衝突していました。タイマ割込みの時間をずらすと問題なく受信できました。ヒントをいただけて解決できました。ありがとうございました。

投稿日時 - 2010-05-17 17:41:14

あなたにおすすめの質問

[PR] お役立ち情報