タイトル | : VB シリアルポートは自動Closeできません。 |
記事No | : 11293 |
投稿日 | : 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
どなたかご教授して頂けませんでしょうか。
|