<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>basic_serial_port::write_some (1 of 2 overloads)</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../../boost_asio.html" title="Boost.Asio">
<link rel="up" href="../write_some.html" title="basic_serial_port::write_some">
<link rel="prev" href="../write_some.html" title="basic_serial_port::write_some">
<link rel="next" href="overload2.html" title="basic_serial_port::write_some (2 of 2 overloads)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../write_some.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write_some.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../boost_asio.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overload2.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_asio.reference.basic_serial_port.write_some.overload1"></a><a class="link" href="overload1.html" title="basic_serial_port::write_some (1 of 2 overloads)">basic_serial_port::write_some
          (1 of 2 overloads)</a>
</h5></div></div></div>
<p>
            Write some data to the serial port.
          </p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span>
    <span class="keyword">typename</span> <a class="link" href="../../ConstBufferSequence.html" title="Constant buffer sequence requirements">ConstBufferSequence</a><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">write_some</span><span class="special">(</span>
    <span class="keyword">const</span> <span class="identifier">ConstBufferSequence</span> <span class="special">&amp;</span> <span class="identifier">buffers</span><span class="special">);</span>
</pre>
<p>
            This function is used to write data to the serial port. The function
            call will block until one or more bytes of the data has been written
            successfully, or until an error occurs.
          </p>
<a name="boost_asio.reference.basic_serial_port.write_some.overload1.parameters"></a><h6>
<a name="id987911"></a>
            <a class="link" href="overload1.html#boost_asio.reference.basic_serial_port.write_some.overload1.parameters">Parameters</a>
          </h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
<dt><span class="term">buffers</span></dt>
<dd><p>
                  One or more data buffers to be written to the serial port.
                </p></dd>
</dl>
</div>
<a name="boost_asio.reference.basic_serial_port.write_some.overload1.return_value"></a><h6>
<a name="id987954"></a>
            <a class="link" href="overload1.html#boost_asio.reference.basic_serial_port.write_some.overload1.return_value">Return
            Value</a>
          </h6>
<p>
            The number of bytes written.
          </p>
<a name="boost_asio.reference.basic_serial_port.write_some.overload1.exceptions"></a><h6>
<a name="id987982"></a>
            <a class="link" href="overload1.html#boost_asio.reference.basic_serial_port.write_some.overload1.exceptions">Exceptions</a>
          </h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
<dt><span class="term">boost::system::system_error</span></dt>
<dd><p>
                  Thrown on failure. An error code of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">error</span><span class="special">::</span><span class="identifier">eof</span></code>
                  indicates that the connection was closed by the peer.
                </p></dd>
</dl>
</div>
<a name="boost_asio.reference.basic_serial_port.write_some.overload1.remarks"></a><h6>
<a name="id988062"></a>
            <a class="link" href="overload1.html#boost_asio.reference.basic_serial_port.write_some.overload1.remarks">Remarks</a>
          </h6>
<p>
            The write_some operation may not transmit all of the data to the peer.
            Consider using the <a class="link" href="../../write.html" title="write"><code class="computeroutput"><span class="identifier">write</span></code></a> function if you need to
            ensure that all data is written before the blocking operation completes.
          </p>
<a name="boost_asio.reference.basic_serial_port.write_some.overload1.example"></a><h6>
<a name="id988107"></a>
            <a class="link" href="overload1.html#boost_asio.reference.basic_serial_port.write_some.overload1.example">Example</a>
          </h6>
<p>
            To write a single data buffer use the <a class="link" href="../../buffer.html" title="buffer"><code class="computeroutput"><span class="identifier">buffer</span></code></a> function as follows:
          </p>
<pre class="programlisting"><span class="identifier">serial_port</span><span class="special">.</span><span class="identifier">write_some</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">data</span><span class="special">,</span> <span class="identifier">size</span><span class="special">));</span>
</pre>
<p>
            See the <a class="link" href="../../buffer.html" title="buffer"><code class="computeroutput"><span class="identifier">buffer</span></code></a>
            documentation for information on writing multiple buffers in one go,
            and how to use it with arrays, boost::array or std::vector.
          </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2003 - 2010 Christopher M. Kohlhoff<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../write_some.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write_some.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../boost_asio.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overload2.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
