SerialPort.Handshake Property


Gets or sets the handshaking protocol for serial port transmission of data using a value from Handshake.

Namespace:   System.IO.Ports
Assembly:  System (in System.dll)

Public Property Handshake As Handshake

Property Value

Type: System.IO.Ports.Handshake

One of the Handshake values. The default is None.

Exception Condition

The port is in an invalid state.

- or -

An attempt to set the state of the underlying port failed. For example, the parameters passed from this SerialPort object were invalid.


The value passed is not a valid value in the Handshake enumeration.

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. The device is instructed to start sending data again when there are 1024 or fewer bytes in the buffer. If the device is sending data in blocks that are larger than 1024 bytes, this may cause the buffer to overflow.

If the Handshake property is set to RequestToSendXOnXOff and CtsHolding is set to false, the XOff character will not be sent. If CtsHolding is then set to true, more data must be sent before the XOff character will be sent.

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. This code example is part of a larger code example provided for the SerialPort class.

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

    _continue = True

    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
            _serialPort.WriteLine([String].Format("<{0}>: {1}", name, message))
        End If
    End While

End Sub

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

.NET Framework
Available since 2.0
Return to top