2012-01-22 10 views
2

私は、Bluetoothデバイス( "90123.9mm"のような単純な文字列)からデータを受け取るvb.netの簡単なアプリケーションを作成しました。Bluetooth接続が閉じられているか、vb.netで作成できないかを確認するにはどうすればいいですか?

デバイスが接続を閉じたかどうかを確認する方法はありますか?

私はタイマー

If SerialPort1 Is Nothing Then 
    MsgBox("no connect") 
End If 

If Not (SerialPort1.IsOpen) Then 
    MsgBox("no connect") 
End If 

ではなく、運にコードを配置することを試みました。

ここに接続コードと受信コードがあります。

Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click 
    SerialPort1.PortName = "COM22" 
    SerialPort1.BaudRate = "9600" 
    SerialPort1.Parity = IO.Ports.Parity.None 
    SerialPort1.StopBits = IO.Ports.StopBits.One 
    SerialPort1.DataBits = 8 
    SerialPort1.Open() 

    If SerialPort1 Is Nothing Then 
     MsgBox("no connect") 
    End If 

    If Not (SerialPort1.IsOpen) Then 
     MsgBox("no connect") 
    End If 

    btnConnect.Enabled = False 
    btnDisconnect.Enabled = True 

End Sub 

Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click 
    SerialPort1.Close() 

    btnConnect.Enabled = True 
    btnDisconnect.Enabled = False 
End Sub 

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
    ReceivedText(SerialPort1.ReadExisting()) 'aftomata kalite kathe fora pou dexomai nea dedomena 
End Sub 

Private Sub ReceivedText(ByVal [text] As String) 

    If Me.rtbReceived.InvokeRequired Then 
     Dim x As New SetTextCallback(AddressOf ReceivedText) 
     Me.Invoke(x, New Object() {(text)}) 
    Else 
     Me.rtbReceived.Text &= [text] 
    End If 
End Sub 

答えて

4


ただ、これは、仮想COMポートを使用しての問題の一つである

Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click 

    '--close the serail port if it is open -- 
    If serialPort1.IsOpen Then 
     serialPort1.Close() 
    End If 

    Try 
     '-- configure the various parameters of the serial port -- 
     With serialPort1 
      .PortName = "COM22" 
      .BaudRate = 9600 
      .Parity = IO.Ports.Parity.None 
      .StopBits = IO.Ports.StopBits.One 
      .DataBits = 8 
     End With 

     ' -- now open the port 
      serialPort1.Open() 

     ' -- update the status if you like and 
     ' -- enable/disable the buttons -- 
      btnConnect.Enabled = False 
      btnDisconnect.Enabled = True 
    Catch ex As Exception 
     MsgBox(ex.ToString()) 
    End Try     
End Sub 

Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click 

    Try 
     ' -- close the serial port here -- 
     SerialPort1.Close() 
     ' -- update the status if you like and 
     ' -- enable/disable the buttons -- 

     btnConnect.Enabled = True 
     btnDisconnect.Enabled = False 
    Catch ex As Exception 
    MsgBox(ex.ToString()) 

End Sub 
+0

回答ありがとうございます、私は12時間で試してみます! –

+0

恐らく@jkarrは例外を見ていないので、キャッチブロックにはキャッチするものがありません。 – alanjmcf

+0

コードが正しく動作しています。 –

1

追加のtry catchブロックを試してください - すべてのリモートデバイスへの接続の可視性と任意の接続問題は隠されています。だからこそ、私はいつもダイレクトコミュニケーションAPIを使用しようとしています。例えば、32feet.NETライブラリを使用して、Bluetooth接続を直接行うことができます。

http://32feet.codeplex.com/wikipage?title=Bluetooth%20Serial%20Portshttp://32feet.codeplex.com/wikipage?title=General%20Bluetooth%20Data%20Connectionsなど

関連する問題