Freigeben über


SerialPort.ReadTimeout Eigenschaft

Definition

Ruft die Anzahl der Millisekunden ab, bevor ein Timeout auftritt, wenn ein Lesevorgang nicht beendet wird, oder legt diese fest.

public:
 property int ReadTimeout { int get(); void set(int value); };
public int ReadTimeout { get; set; }
[System.ComponentModel.Browsable(true)]
public int ReadTimeout { get; set; }
member this.ReadTimeout : int with get, set
[<System.ComponentModel.Browsable(true)>]
member this.ReadTimeout : int with get, set
Public Property ReadTimeout As Integer

Eigenschaftswert

Die Anzahl der Millisekunden, bevor ein Timeout auftritt, wenn ein Lesevorgang nicht beendet wird.

Attribute

Ausnahmen

Der Anschluss befindet sich in einem ungültigen Zustand.

- oder -

Fehler beim Versuch, den Zustand des zugrunde liegenden Anschlusses festzulegen. Beispielsweise waren die von diesem SerialPort-Objekt übergebenen Parameter ungültig.

Der Timeoutwert für Lesevorgänge ist kleiner als 0 (null) und ungleich InfiniteTimeout.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung der SerialPort -Klasse, um zwei Benutzern das Chatten von zwei separaten Computern zu ermöglichen, die über ein Nullmodemkabel verbunden sind. In diesem Beispiel werden die Benutzer vor dem Chatten zur Eingabe der Porteinstellungen und eines Benutzernamens aufgefordert. 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 = gcnew Thread(gcnew ThreadStart(PortChat::Read));

        // Create a new SerialPort object with default settings.
        _serialPort = gcnew 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();
    }

    static void Read()
    {
        while (_continue)
        {
            try
            {
                String^ message = _serialPort->ReadLine();
                Console::WriteLine(message);
            }
            catch (TimeoutException ^) { }
        }
    }
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

Der Wert für das Lesetimeout wurde ursprünglich in der Win32 Communications-API auf 500 Millisekunden festgelegt. Mit dieser Eigenschaft können Sie diesen Wert festlegen. Das Timeout kann auf einen beliebigen Wert größer als 0 festgelegt oder auf InfiniteTimeoutfestgelegt werden. In diesem Fall tritt kein Timeout auf. InfiniteTimeout ist die Standardoption.

Hinweis

Benutzer der nicht verwalteten COMMTIMEOUTS Struktur können erwarten, dass sie den Timeoutwert auf 0 festlegen, um Timeouts zu unterdrücken. Um Timeouts mit der ReadTimeout -Eigenschaft zu unterdrücken, müssen Sie jedoch angeben InfiniteTimeout.

Diese Eigenschaft wirkt sich nicht auf die BeginRead Methode des von der BaseStream -Eigenschaft zurückgegebenen Streams aus.

Gilt für: