Postupy: Příjem řetězců ze sériových portů v jazyce Visual Basic

Toto téma popisuje, jak přijímat My.Computer.Ports řetězce ze sériových portů počítače v jazyce Visual Basic.

Příjem řetězců ze sériového portu

  1. Inicializuje vrácený řetězec.

    Dim returnStr As String = ""
    
  2. Určete, který sériový port má poskytovat řetězce. Tento příklad předpokládá, že je COM1.

  3. Použijte metodu My.Computer.Ports.OpenSerialPort k získání odkazu na port. Další informace najdete na webu OpenSerialPort.

    Blok Try...Catch...Finally umožňuje aplikaci zavřít sériový port, i když vygeneruje výjimku. V tomto bloku by se měl zobrazit veškerý kód, který manipuluje s sériovým portem.

    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. Vytvořte smyčku Do pro čtení řádků textu, dokud nebudou k dispozici žádné další řádky.

    Do
    Loop
    
  5. Použijte metodu ReadLine() ke čtení dalšího dostupného řádku textu ze sériového portu.

    Dim Incoming As String = com1.ReadLine()
    
  6. If Pomocí příkazu určete, zda ReadLine() metoda vrátí Nothing (což znamená, že není k dispozici žádný další text). Pokud se vrátí Nothing, ukončete smyčku Do .

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Else Přidejte do If příkazu blok pro zpracování případu, pokud je řetězec skutečně přečten. Blok připojí řetězec z sériového portu k návratovém řetězci.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Vrátí řetězec.

    Return returnStr
    

Příklad

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

Tento příklad kódu je také k dispozici jako fragment kódu IntelliSense. V nástroji pro výběr fragmentu kódu se nachází v Připojení ivitě a sítích. Další informace najdete v tématu Fragmenty kódu.

Probíhá kompilace kódu

Tento příklad předpokládá, že počítač používá COM1.

Robustní programování

Tento příklad předpokládá, že počítač používá COM1. Aby byl kód flexibilnější, měl by uživateli umožnit vybrat požadovaný sériový port ze seznamu dostupných portů. Další informace naleznete v tématu Postupy: Zobrazení dostupných sériových portů.

Tento příklad používá Try...Catch...Finally blok, aby se zajistilo, že aplikace port zavře a zachytí všechny výjimky časového limitu. Další informace naleznete v tématu Vyzkoušet... Chytit... Příkaz Finally.

Viz také