Export (0) Print
Expand All

SerialPort.Handshake Property

Gets or sets the handshaking protocol for serial port transmission of data.

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

'Declaration
<BrowsableAttribute(True)> _
Public Property Handshake As Handshake

Property Value

Type: System.IO.Ports.Handshake
One of the Handshake values. The default is None.

ExceptionCondition
IOException

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.

ArgumentOutOfRangeException

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

    _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

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft