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
Inizializzare la stringa restituita.
Dim returnStr As String = ""
Determinare quale porta seriale deve fornire le stringhe. In questo esempio si presuppone che sia
COM1
.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
Creare un ciclo
Do
per leggere le righe di testo fino a quando non sono più disponibili righe.Do Loop
Usare il metodo ReadLine() per leggere la successiva riga di testo disponibile dalla porta seriale.
Dim Incoming As String = com1.ReadLine()
Usare un'istruzione
If
per determinare se il metodo ReadLine() restituisceNothing
, il che significa che non è più disponibile testo. Se restituisceNothing
, uscire dal cicloDo
.If Incoming Is Nothing Then Exit Do End If
Aggiungere un blocco
Else
all'istruzioneIf
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
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.