[/
 / Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section:serial_ports Serial Ports]

Asio includes classes for creating and manipulating serial ports in a portable
manner. For example, a serial port may be opened using:

  serial_port port(my_io_context, name);

where name is something like `"COM1"` on Windows, and `"/dev/ttyS0"` on POSIX
platforms.

Once opened, the serial port may be used as a [link asio.overview.core.streams
stream]. This means the objects can be used with any of the [link
asio.reference.read read()], [link asio.reference.async_read async_read()],
[link asio.reference.write write()], [link asio.reference.async_write
async_write()], [link asio.reference.read_until read_until()] or [link
asio.reference.async_read_until async_read_until()] free functions.

The serial port implementation also includes option classes for configuring the
port's baud rate, flow control type, parity, stop bits and character size.

[heading See Also]

[link asio.reference.serial_port serial_port],
[link asio.reference.serial_port_base serial_port_base],
[link asio.reference.serial_port_base__baud_rate serial_port_base::baud_rate],
[link asio.reference.serial_port_base__flow_control serial_port_base::flow_control],
[link asio.reference.serial_port_base__parity serial_port_base::parity],
[link asio.reference.serial_port_base__stop_bits serial_port_base::stop_bits],
[link asio.reference.serial_port_base__character_size serial_port_base::character_size].

[heading Notes]

Serial ports are available on all POSIX platforms. For Windows, serial ports
are only available at compile time when the I/O completion port backend is used
(which is the default). A program may test for the macro
`ASIO_HAS_SERIAL_PORT` to determine whether they are supported.

[endsect]
