Freigeben über


SerialPort.ReadLine Methode

Definition

Liest bis zum NewLine Wert im Eingabepuffer vor.

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

Gibt zurück

Der Inhalt des Eingabepuffers bis zum ersten Vorkommen eines NewLine Werts.

Ausnahmen

Der angegebene Port ist nicht geöffnet.

Der Vorgang wurde vor Ablauf des Timeoutzeitraums nicht abgeschlossen.

- oder -

Es wurden keine Bytes gelesen.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der SerialPort Klasse veranschaulicht, um zwei Benutzern das Chatten von zwei separaten Computern zu ermöglichen, die über ein NULL-Modemkabel verbunden sind. Dieses Codebeispiel ist Teil eines größeren Codebeispiels, das für die SerialPort Klasse bereitgestellt wird.

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

Hinweise

Beachten Sie, dass während diese Methode den NewLine Wert nicht zurückgibt, der NewLine Wert aus dem Eingabepuffer entfernt wird.

Standardmäßig wird die ReadLine Methode blockiert, bis eine Zeile empfangen wird. Wenn dieses Verhalten nicht erwünscht ist, legen Sie die ReadTimeout Eigenschaft auf einen wert ungleich Null fest, um zu erzwingen, dass die ReadLine Methode eine TimeoutException Zeile auslöst, wenn keine Zeile im Port verfügbar ist.

Wenn es erforderlich ist, zwischen dem Lesen von Text und dem Lesen von Binärdaten aus dem Datenstrom zu wechseln, wählen Sie ein Protokoll aus, das die Grenze zwischen Text und Binären Daten sorgfältig definiert, z. B. manuelles Lesen von Bytes und Decodieren der Daten.

Hinweis

Da die SerialPort Klassendaten und der in der BaseStream Eigenschaft enthaltene Datenstrom nicht gepuffert werden, stehen möglicherweise Konflikte zwischen den beiden Bytes zum Lesen zur Verfügung. Die BytesToRead Eigenschaft kann angeben, dass Bytes gelesen werden sollen, aber auf diese Bytes kann möglicherweise nicht auf den in der BaseStream Eigenschaft enthaltenen Datenstrom zugegriffen werden, da sie in der SerialPort Klasse gepuffert wurden.

Gilt für: