Procedura: ricevere stringhe da porte seriali in Visual Basic

In questo argomento viene descritto come utilizzare 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. Utilizzare 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. Utilizzare il metodo ReadLine per leggere la successiva riga di testo disponibile dalla porta seriale.

    Dim Incoming As String = com1.ReadLine()
    
  6. Utilizzare 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 è anche disponibile come frammento di codice IntelliSense.Nella casella di selezione dei frammenti di codice, si trova in Connettività e rete.Per ulteriori informazioni, vedere Frammenti di codice.

Compilazione del codice

In questo esempio si presuppone che venga utilizzata la porta COM1.

Programmazione efficiente

In questo esempio si presuppone che venga utilizzata la 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 ulteriori informazioni, vedere Procedura: mostrare le porte seriali disponibili in Visual Basic.

In questo esempio viene utilizzato un blocco Try...Catch...Finally per verificare che l'applicazione chiuda la porta e per rilevare tutte le eccezioni di timeout.Per ulteriori informazioni, vedere Istruzione Try...Catch...Finally (Visual Basic).

Vedere anche

Attività

Procedura: comporre numeri con modem collegati a porte seriali in Visual Basic

Procedura: inviare stringhe a porte seriali in Visual Basic

Procedura: mostrare le porte seriali disponibili in Visual Basic

Riferimenti

Ports

System.IO.Ports.SerialPort