2012-01-22 73 views
2

我已經在vb.net中創建了一個簡單的應用程序,它從藍牙設備(簡單的字符串,如「90123.9mm」)接收數據。如何檢查藍牙連接是否關閉或無法使用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


只是附加的try catch塊

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你沒有看到任何異常,因此catch塊將沒有任何東西可以趕上... – alanjmcf

+0

Coddey你的代碼工作正常很多很多謝謝! –