SerialPort.ReadLine Methode

Definitie

Hiermee wordt de NewLine waarde in de invoerbuffer gelezen.

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

Retouren

De inhoud van de invoerbuffer tot het eerste exemplaar van een NewLine waarde.

Uitzonderingen

De opgegeven poort is niet geopend.

De bewerking is niet voltooid voordat de time-outperiode is beëindigd.

– of –

Er zijn geen bytes gelezen.

Voorbeelden

Het volgende codevoorbeeld laat het gebruik van de SerialPort klasse zien, zodat twee gebruikers kunnen chatten vanaf twee afzonderlijke computers die zijn verbonden met een null-modemkabel. Dit codevoorbeeld maakt deel uit van een groter codevoorbeeld dat is opgegeven voor de SerialPort klasse.

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

Opmerkingen

Houd er rekening mee dat hoewel deze methode de NewLine waarde niet retourneert, de NewLine waarde uit de invoerbuffer wordt verwijderd.

De methode wordt standaard ReadLine geblokkeerd totdat een regel wordt ontvangen. Als dit gedrag ongewenst is, stelt u de ReadTimeout eigenschap in op een niet-nulwaarde om de ReadLine methode af te dwingen om een TimeoutException als een regel niet beschikbaar is op de poort te gooien.

Als het nodig is om te schakelen tussen het lezen van tekst en het lezen van binaire gegevens uit de stroom, selecteert u een protocol dat de grens tussen tekst en binaire gegevens zorgvuldig definieert, zoals het handmatig lezen van bytes en het decoderen van de gegevens.

Note

Omdat de SerialPort klasse gegevens buffert en de stroom in de BaseStream eigenschap niet, kunnen de twee conflicteren over hoeveel bytes er beschikbaar zijn om te lezen. De BytesToRead eigenschap kan aangeven dat er bytes zijn om te lezen, maar deze bytes zijn mogelijk niet toegankelijk voor de stream in de BaseStream eigenschap omdat ze zijn gebufferd naar de SerialPort klasse.

Van toepassing op