Sdílet prostřednictvím


Postupy: Jak načíst řetězce ze sériových portů v jazyce Visual Basic

Toto téma popisuje způsob použití My.Computer.Ports k příjmu řetězce z sériových portů počítače v Visual Basic.

Přijímat řetězce z sériový portů

  1. Inicializujte návratový řetězec.

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

  3. Použijte metodu My.Computer.Ports.OpenSerialPort chcete-li získat odkaz na port. Další informace naleznete v tématu OpenSerialPort.

    Blok Try...Catch...Finally povolí aplikaci uzavření sériového portu i v případě, že vygeneruje výjimka. Všechen kód, který manipuluje s sériovými porty, by se měla nacházet v tomto bloku.

    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ů text, která se bude provádět dokud nejsou k dispozici žádné další řádky.

    Do
    Loop
    
  5. Použijte metodu ReadLine k přečtení další řádky z textu, který je načten z sériového portu.

    Dim Incoming As String = com1.ReadLine()
    
  6. Použijte příkaz If k zjištění, zda metoda ReadLine vrátí Nothing (což znamená žádný další text není k dispozici). Pokud vrátit Nothing, ukončete Do smyčka.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Přidejte blok Else k příkazu If k zpracování případu, že řetězec je skutečně k přečtení. Blok připojí řetězec ze sériového portu k návratovému ř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é dostupný jako IntelliSense fragment kódu. V dialogu pro výběr fragment kódu je umístěn v Možnosti připojení a sítě. Další informace naleznete v tématu How to: Insert IntelliSense Code Snippets.

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. Pro větší flexibilitu by měl kód umožnit uživateli vybrání požadované sériový port ze seznamu dostupných portů. Další informace naleznete v tématu Postupy: Jak zobrazit dostupně sériové porty v jazyce Visual Basic.

V tomto příkladu je použit blok Try...Catch...Finally k zabezpečení uzavření portu a k zachycení všech vyjímek spojených s vypršením časového limitu. Další informace naleznete v tématu Try...Catch...Finally Statement (Visual Basic).

Viz také

Úkoly

Postupy: Jak vytáčet modemy připojené k sériovým portům v jazyce Visual Basic

Postupy: Jak odeslat řetězce na sériové porty v jazyce Visual Basic

Postupy: Jak zobrazit dostupně sériové porty v jazyce Visual Basic

Odkaz

Ports

System.IO.Ports.SerialPort