.NET Framework Class Library
SerialPort..::.Handshake Property

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

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

Visual Basic (Declaration)
<BrowsableAttribute(True)> _
Public Property Handshake As Handshake
Visual Basic (Usage)
Dim instance As SerialPort
Dim value As Handshake

value = instance.Handshake

instance.Handshake = value
C#
[BrowsableAttribute(true)]
public Handshake Handshake { get; set; }
Visual C++
[BrowsableAttribute(true)]
public:
property Handshake Handshake {
    Handshake get ();
    void set (Handshake value);
}
JScript
public function get Handshake () : Handshake
public function set Handshake (value : Handshake)

Property Value

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

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.

InvalidOperationException

The stream is closed. This can occur because the Open method has not been called or the Close method has been called.

Remarks

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.

Examples

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.

Visual Basic
Public Shared Sub Main()
    Dim name As String
    Dim message As String
    Dim sComparer As StringComparer = StringComparer.OrdinalIgnoreCase
    Dim readThread As Thread = 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 sComparer.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 ex As TimeoutException
            ' Do nothing
        End Try
    End While
End Sub
C#
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) { }
    }
}
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0

.NET Compact Framework

Supported in: 3.5, 2.0
See Also

Reference

Tags :


Page view tracker