Aracılığıyla paylaş


Nasıl yapılır: Visual Basic'te Seri Bağlantı Noktalarından Dize Alma

Bu konu, Visual Basic'te bilgisayardaki seri bağlantı noktalarından dizeleri almak için My.Computer.Ports'ın nasıl kullanılacağını açıklar.

Seri porttan dizi almak için

  1. Dönüş dizesini başlatın.

    Dim returnStr As String = ""
    
  2. Dizeleri hangi seri bağlantı noktasının sağlaması gerektiğini belirleyin. Bu örnekte olduğu varsayılır COM1.

  3. Bağlantı noktasına başvuru almak için My.Computer.Ports.OpenSerialPort yöntemini kullanın. Daha fazla bilgi için bkz. OpenSerialPort.

    Bu blok, Try...Catch...Finally uygulamanın, özel durum oluştursa bile seri bağlantı noktasını kapatmasına olanak tanır. Seri bağlantı noktasını işleyen tüm kod bu blok içinde görünmelidir.

    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. Kullanılabilir satır kalmayıncaya kadar metin satırlarını okumak için bir Do döngü oluşturun.

    Do
    Loop
    
  5. Seri porttan bir sonraki mevcut metin satırını okumak için ReadLine() yöntemini kullanın.

    Dim Incoming As String = com1.ReadLine()
    
  6. Bir If deyimi kullanarak ReadLine() yönteminin Nothing döndürüp döndürmediğini belirleyin (bu, başka metin kalmadığı anlamına gelir). Eğer Nothing dönerse, Do döngüsünden çıkın.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Bir dize gerçekten okunuyorsa durumu ele almak için Else ifadesine bir If bloğu ekleyin. Blok, dizeyi seri bağlantı noktasından dönüş dizesine ekler.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Dizeyi geri döndür.

    Return returnStr
    

Örnek

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

Bu kod örneği, IntelliSense kod parçacığı olarak da kullanılabilir. Kod parçacığı seçicisinde Bağlantı ve Ağ'da bulunur. Daha fazla bilgi için bkz. Kod Parçacıkları.

Kodu Derleme

Bu örnekte, bilgisayarın kullandığı COM1varsayılır.

Sağlam Programlama

Bu örnekte, bilgisayarın kullandığı COM1varsayılır. Daha fazla esneklik için kod, kullanıcının kullanılabilir bağlantı noktaları listesinden istenen seri bağlantı noktasını seçmesine izin vermelidir. Daha fazla bilgi için bkz . Nasıl yapılır: Kullanılabilir Seri Bağlantı Noktalarını Gösterme.

Bu örnekte, uygulamanın bağlantı noktasını kapatmasını sağlamak ve zaman aşımı özel durumlarını yakalamak için bir Try...Catch...Finally blok kullanılır. Daha fazla bilgi için, Try...Catch...Finally Deyimi bölümüne bakın.

Ayrıca bakınız