Aracılığıyla paylaş


SerialPort.ReadLine Yöntem

Tanım

Giriş arabelleğindeki NewLine değeri okur.

public:
 System::String ^ ReadLine();
public string ReadLine();
member this.ReadLine : unit -> string
Public Function ReadLine () As String

Döndürülenler

Bir değerin ilk oluşumuna kadar giriş arabelleğinin NewLine içeriği.

Özel durumlar

Belirtilen bağlantı noktası açık değil.

Zaman aşımı süresi sona ermeden önce işlem tamamlanmadı.

-veya-

Hiçbir bayt okunmadı.

Örnekler

Aşağıdaki kod örneği, iki kullanıcının null modem kablosuyla bağlanan iki ayrı bilgisayardan sohbet etmelerine izin vermek için sınıfının kullanımını SerialPort gösterir. Bu kod örneği, sınıfı için sağlanan daha büyük bir kod örneğinin SerialPort parçasıdır.

public static void Main()
{
    string name;
    string message;
    StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
    Thread readThread = new Thread(Read);

    // Create a new SerialPort object with default settings.
    _serialPort = new SerialPort();

    // Allow the user to set the appropriate properties.
    _serialPort.PortName = SetPortName(_serialPort.PortName);
    _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
    _serialPort.Parity = SetPortParity(_serialPort.Parity);
    _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
    _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
    _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);

    // Set the read/write timeouts
    _serialPort.ReadTimeout = 500;
    _serialPort.WriteTimeout = 500;

    _serialPort.Open();
    _continue = true;
    readThread.Start();

    Console.Write("Name: ");
    name = Console.ReadLine();

    Console.WriteLine("Type QUIT to exit");

    while (_continue)
    {
        message = Console.ReadLine();

        if (stringComparer.Equals("quit", message))
        {
            _continue = false;
        }
        else
        {
            _serialPort.WriteLine(
                String.Format("<{0}>: {1}", name, message));
        }
    }

    readThread.Join();
    _serialPort.Close();
}

public static void Read()
{
    while (_continue)
    {
        try
        {
            string message = _serialPort.ReadLine();
            Console.WriteLine(message);
        }
        catch (TimeoutException) { }
    }
}
Public Shared Sub Main()
    Dim name As String
    Dim message As String
    Dim stringComparer__1 As StringComparer = StringComparer.OrdinalIgnoreCase
    Dim readThread As New Thread(AddressOf Read)

    ' Create a new SerialPort object with default settings.
    _serialPort = New SerialPort()

    ' Allow the user to set the appropriate properties.
    _serialPort.PortName = SetPortName(_serialPort.PortName)
    _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
    _serialPort.Parity = SetPortParity(_serialPort.Parity)
    _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
    _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
    _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)

    ' Set the read/write timeouts
    _serialPort.ReadTimeout = 500
    _serialPort.WriteTimeout = 500

    _serialPort.Open()
    _continue = True
    readThread.Start()

    Console.Write("Name: ")
    name = Console.ReadLine()

    Console.WriteLine("Type QUIT to exit")

    While _continue
        message = Console.ReadLine()

        If stringComparer__1.Equals("quit", message) Then
            _continue = False
        Else
            _serialPort.WriteLine([String].Format("<{0}>: {1}", name, message))
        End If
    End While

    readThread.Join()
    _serialPort.Close()
End Sub

Public Shared Sub Read()
    While _continue
        Try
            Dim message As String = _serialPort.ReadLine()
            Console.WriteLine(message)
        Catch generatedExceptionName As TimeoutException
        End Try
    End While
End Sub

Açıklamalar

Bu yöntem değeri döndürmese NewLine de değerin NewLine giriş arabelleğinden kaldırıldığını unutmayın.

Varsayılan olarak, ReadLine yöntem bir satır alınana kadar engeller. Bu davranış istenmeyen bir davranışsa, yöntemini bağlantı noktasında bir çizgi yoksa atmaya TimeoutException zorlamak ReadLine için özelliğini sıfır olmayan bir değere ayarlayınReadTimeout.

Metin okuma ile akıştan ikili verileri okuma arasında geçiş yapmak gerekiyorsa, el ile bayt okuma ve verilerin kodunu çözme gibi metin ve ikili veriler arasındaki sınırı dikkatle tanımlayan bir protokol seçin.

Uyarı

SerialPort Sınıfı verileri arabelleğe alır ve özelliğinde BaseStream yer alan akış arabelleğe almadığından, bu ikisi okunabilecek bayt sayısıyla ilgili çakışabilir. BytesToRead özelliği, okunacak baytlar olduğunu gösterebilir, ancak bu baytlar sınıfına arabelleğe alındıkları için özelliğin BaseStream içerdiği akış için SerialPort erişilebilir olmayabilir.

Şunlara uygulanır