SerialPort.Handshake Свойство

Определение

Возвращает или задает протокол установления связи для передачи данных через последовательный порт с использованием значения Handshake.Gets or sets the handshaking protocol for serial port transmission of data using a value from Handshake.

public:
 property System::IO::Ports::Handshake Handshake { System::IO::Ports::Handshake get(); void set(System::IO::Ports::Handshake value); };
[System.ComponentModel.Browsable(true)]
public System.IO.Ports.Handshake Handshake { get; set; }
member this.Handshake : System.IO.Ports.Handshake with get, set
Public Property Handshake As Handshake

Значение свойства

Одно из значений Handshake.One of the Handshake values. Значение по умолчанию: None.The default is None.

Атрибуты

Исключения

Порт находится в недействительном состоянии.The port is in an invalid state.

-или--or- Попытка задать состояние базового порта завершилась неудачей.An attempt to set the state of the underlying port failed. Например, вследствие недопустимости переданных этим объектом SerialPort параметров.For example, the parameters passed from this SerialPort object were invalid.

Переданное значение не является допустимым значением перечисления Handshake.The value passed is not a valid value in the Handshake enumeration.

Примеры

В следующем примере кода показано использование класса SerialPort, позволяющего двум пользователям общаться с двух отдельных компьютеров, Соединенных нуль-модемным кабелем.The following code example demonstrates the use of the SerialPort class to allow two users to chat from two separate computers connected by a null modem cable. В этом примере пользователям предлагается ввести параметры порта и имя пользователя перед разговором.In this example, the users are prompted for the port settings and a username before chatting. Этот пример кода является частью более крупного примера кода, предоставленного для класса SerialPort.This code example is part of a larger code example provided for the SerialPort class.

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

Комментарии

При использовании подтверждения устройство, подключенное к объекту SerialPort, получает указание о том, что отправка данных прекращается, если в буфере находится по меньшей мере (ReadBufferSize-1024) байт.When handshaking is used, the device connected to the SerialPort object is instructed to stop sending data when there is at least (ReadBufferSize-1024) bytes in the buffer. Устройство дает указание начать отправку данных, если в буфере 1024 или меньше байтов.The device is instructed to start sending data again when there are 1024 or fewer bytes in the buffer. Если устройство отправляет данные в блоки размером более 1024 байт, это может привести к переполнению буфера.If the device is sending data in blocks that are larger than 1024 bytes, this may cause the buffer to overflow.

Если свойство Handshake имеет значение RequestToSendXOnXOff а CtsHolding имеет значение false, то символ XOff не будет отправлен.If the Handshake property is set to RequestToSendXOnXOff and CtsHolding is set to false, the XOff character will not be sent. Если для параметра CtsHolding установлено значение true, то перед отправкой символа XOff необходимо отправить больше данных.If CtsHolding is then set to true, more data must be sent before the XOff character will be sent.

Применяется к