タイトル : VB シリアルポートは自動Closeできません。 投稿日 : 2014/07/16(Wed) 11:41 投稿者 : KouTou
初めまして。KouTouと申します。 VB2010を利用して、シリアルポート受信のプログラムを作成しております。 ある条件を満たしたら、ポートを自動的にCloseする、もしくは受信イベントを停止する、との設計仕様ですが、プログラムはなかなかうまく行けませんでした。 因みに、FormにCloseボタンを置いて、それをクリックすると、いつでもCloseできます。 例文は以下です。 Private Sub CloseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseButton.Click If SerialPort1.IsOpen = True Then 'シリアルポートをクローズする. SerialPort1.Close() End If End Sub '****************************************************************************' 'データ受信が発生したときのイベント処理. Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 'シリアルポートをオープンしていない場合、処理を行わない. If SerialPort1.IsOpen = False Then Return End If Try '受信データを読み込む. Dim lenBuf Dim buf(1024) As Byte lenBuf = SerialPort1.Read(buf, 0, 1024) '受信したデータをテキストボックスに書き込む. Dim args(0) As Object args(0) = Encoding.GetEncoding("Shift_JIS").GetString(buf, 0, lenBuf) Invoke( New Delegate_RcvDataToTextBox( AddressOf Me.RcvDataToTextBox ), args ) Catch ex As Exception MsgBox( ex.Message ) End Try End Sub '****************************************************************************' '受信データをテキストボックスに書き込む. Private Sub RcvDataToTextBox( data As String ) iRow = iRow + 1 '受信データをテキストボックスの最後に追記する. If IsNothing( data ) = False Then RcvTextBox.AppendText(iRow.ToString() & " " & data) End If ''例えば、10回受信処理したら、受信処理を止める、もしくは、ポートをクローズする。 ***If iRow >= 10 Then *** SerialPort1.Close() ***End If End Sub どなたかご教授して頂けませんでしょうか。 |