tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

 どなたかご教授して頂けませんでしょうか。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。