Procedura: ricevere stringhe da porte seriali in Visual Basic

Questo argomento descrive come usare My.Computer.Ports per ricevere stringhe dalle porte seriali del computer in Visual Basic.

Per ricevere stringhe dalla porta seriale

  1. Inizializzare la stringa restituita.

    Dim returnStr As String = ""
    
  2. Determinare quale porta seriale deve fornire le stringhe. In questo esempio si presuppone che sia COM1.

  3. Usare il metodo My.Computer.Ports.OpenSerialPort per ottenere un riferimento alla porta. Per ulteriori informazioni, vedere OpenSerialPort.

    Il blocco Try...Catch...Finally consente all'applicazione di chiudere la porta seriale anche se viene generata un'eccezione. Tutto il codice per la modifica della porta seriale deve essere contenuto all'interno di questo blocco.

    Dim com1 As IO.Ports.SerialPort = Nothing
    Try
        com1 = My.Computer.Ports.OpenSerialPort("COM1")
        com1.ReadTimeout = 10000
    
    Catch ex As TimeoutException
        returnStr = "Error: Serial Port read timed out."
    Finally
        If com1 IsNot Nothing Then com1.Close()
    End Try
    
  4. Creare un ciclo Do per leggere le righe di testo fino a quando non sono più disponibili righe.

    Do
    Loop
    
  5. Usare il metodo ReadLine() per leggere la successiva riga di testo disponibile dalla porta seriale.

    Dim Incoming As String = com1.ReadLine()
    
  6. Usare un'istruzione If per determinare se il metodo ReadLine() restituisce Nothing, il che significa che non è più disponibile testo. Se restituisce Nothing, uscire dal ciclo Do.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Aggiungere un blocco Else all'istruzione If per gestire la situazione se la stringa viene effettivamente letta. Il blocco consente di aggiungere la stringa dalla porta seriale alla stringa restituita.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Restituire la stringa.

    Return returnStr
    

Esempio

Function ReceiveSerialData() As String
    ' Receive strings from a serial port.
    Dim returnStr As String = ""

    Dim com1 As IO.Ports.SerialPort = Nothing
    Try
        com1 = My.Computer.Ports.OpenSerialPort("COM1")
        com1.ReadTimeout = 10000
        Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming Is Nothing Then
                Exit Do
            Else
                returnStr &= Incoming & vbCrLf
            End If
        Loop
    Catch ex As TimeoutException
        returnStr = "Error: Serial Port read timed out."
    Finally
        If com1 IsNot Nothing Then com1.Close()
    End Try

    Return returnStr
End Function

Questo esempio di codice è disponibile anche come frammento di codice IntelliSense. Nella selezione del frammento di codice si trova in Connettività e rete. Per altre informazioni, vedere Code Snippets.

Compilazione del codice

Questo esempio presuppone l'uso della porta COM1.

Programmazione efficiente

Questo esempio presuppone l'uso della porta COM1. Per garantire una maggiore flessibilità, il codice deve consentire all'utente di selezionare la porta seriale desiderata da un elenco di porte disponibili. Per altre informazioni, vedere Procedura: Mostrare le porte seriali disponibili.

Questo esempio usa un blocco Try...Catch...Finally per verificare che l'applicazione chiuda la porta e per rilevare tutte le eccezioni di timeout. Per altre informazioni, vedere Istruzione Try...Catch...Finally.

Vedi anche