1
0
mirror of https://github.com/wjwwood/serial.git synced 2026-01-22 11:44:53 +08:00
serial/doc/1.0.1/serial__example_8cc.html
2012-10-24 00:15:53 -07:00

308 lines
15 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>serial: examples/serial_example.cc File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">serial
&#160;<span id="projectnumber">1.0.1</span>
</div>
<div id="projectbrief">Cross-platform serial port library written in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.8.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">examples/serial_example.cc File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;string&gt;</code><br/>
<code>#include &lt;iostream&gt;</code><br/>
<code>#include &lt;cstdio&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="serial_8h_source.html">serial/serial.h</a>&quot;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for serial_example.cc:</div>
<div class="dyncontent">
<div class="center"><img src="serial__example_8cc__incl.png" border="0" usemap="#examples_2serial__example_8cc" alt=""/></div>
<map name="examples_2serial__example_8cc" id="examples_2serial__example_8cc">
<area shape="rect" id="node11" href="serial_8h.html" title="serial/serial.h" alt="" coords="329,80,428,107"/><area shape="rect" id="node26" href="v8stdint_8h.html" title="serial/v8stdint.h" alt="" coords="644,155,759,181"/></map>
</div>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a89b7c9d8c710b057346cc9ac52ae3734"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="serial__example_8cc.html#a89b7c9d8c710b057346cc9ac52ae3734">my_sleep</a> (unsigned long milliseconds)</td></tr>
<tr class="memitem:ac1f545534cdaab9094198a5dc2c2a79f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="serial__example_8cc.html#ac1f545534cdaab9094198a5dc2c2a79f">run</a> (int argc, char **argv)</td></tr>
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="serial__example_8cc.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
</table>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="serial__example_8cc.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a> </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<div class="fragment"><pre class="fragment"> {
<span class="keywordflow">try</span> {
<span class="keywordflow">return</span> <a class="code" href="serial__example_8cc.html#ac1f545534cdaab9094198a5dc2c2a79f">run</a>(argc, argv);
} <span class="keywordflow">catch</span> (exception &amp;e) {
cerr &lt;&lt; <span class="stringliteral">&quot;Unhandled Exception: &quot;</span> &lt;&lt; e.what() &lt;&lt; endl;
}
}
</pre></div>
</div>
</div>
<a class="anchor" id="a89b7c9d8c710b057346cc9ac52ae3734"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="serial__example_8cc.html#a89b7c9d8c710b057346cc9ac52ae3734">my_sleep</a> </td>
<td>(</td>
<td class="paramtype">unsigned long&#160;</td>
<td class="paramname"><em>milliseconds</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<div class="fragment"><pre class="fragment"> {
<span class="preprocessor">#ifdef _WIN32</span>
<span class="preprocessor"></span> Sleep(milliseconds); <span class="comment">// 100 ms</span>
<span class="preprocessor">#else</span>
<span class="preprocessor"></span> usleep(milliseconds*1000); <span class="comment">// 100 ms</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor"></span>}
</pre></div>
</div>
</div>
<a class="anchor" id="ac1f545534cdaab9094198a5dc2c2a79f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="serial__example_8cc.html#ac1f545534cdaab9094198a5dc2c2a79f">run</a> </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<div class="fragment"><pre class="fragment">{
<span class="keywordflow">if</span>(argc &lt; 3) {
cerr &lt;&lt; <span class="stringliteral">&quot;Usage: test_serial &lt;serial port address&gt; &quot;</span>;
cerr &lt;&lt; <span class="stringliteral">&quot;&lt;baudrate&gt; [test string]&quot;</span> &lt;&lt; endl;
<span class="keywordflow">return</span> 0;
}
<span class="comment">// Argument 1 is the serial port</span>
<span class="keywordtype">string</span> port(argv[1]);
<span class="comment">// Argument 2 is the baudrate</span>
<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> baud = 0;
sscanf(argv[2], <span class="stringliteral">&quot;%lu&quot;</span>, &amp;baud);
<span class="comment">// port, baudrate, timeout in milliseconds</span>
<a class="code" href="classserial_1_1_serial.html">serial::Serial</a> my_serial(port, baud, <a class="code" href="structserial_1_1_timeout.html#aa4fbd72e16f47c9aea9fb3c32ca17828">serial::Timeout::simpleTimeout</a>(1000));
cout &lt;&lt; <span class="stringliteral">&quot;Is the serial port open?&quot;</span>;
<span class="keywordflow">if</span>(my_serial.isOpen())
cout &lt;&lt; <span class="stringliteral">&quot; Yes.&quot;</span> &lt;&lt; endl;
<span class="keywordflow">else</span>
cout &lt;&lt; <span class="stringliteral">&quot; No.&quot;</span> &lt;&lt; endl;
<span class="comment">// Get the Test string</span>
<span class="keywordtype">int</span> count = 0;
<span class="keywordtype">string</span> test_string;
<span class="keywordflow">if</span> (argc == 4) {
test_string = argv[3];
} <span class="keywordflow">else</span> {
test_string = <span class="stringliteral">&quot;Testing.&quot;</span>;
}
<span class="comment">// Test the timeout, there should be 1 second between prints</span>
cout &lt;&lt; <span class="stringliteral">&quot;Timeout == 1000ms, asking for 1 more byte than written.&quot;</span> &lt;&lt; endl;
<span class="keywordflow">while</span> (count &lt; 10) {
<span class="keywordtype">size_t</span> bytes_wrote = my_serial.write(test_string);
<span class="keywordtype">string</span> result = my_serial.read(test_string.length()+1);
cout &lt;&lt; <span class="stringliteral">&quot;Iteration: &quot;</span> &lt;&lt; count &lt;&lt; <span class="stringliteral">&quot;, Bytes written: &quot;</span>;
cout &lt;&lt; bytes_wrote &lt;&lt; <span class="stringliteral">&quot;, Bytes read: &quot;</span>;
cout &lt;&lt; result.length() &lt;&lt; <span class="stringliteral">&quot;, String read: &quot;</span> &lt;&lt; result &lt;&lt; endl;
count += 1;
}
<span class="comment">// Test the timeout at 250ms</span>
my_serial.setTimeout(<a class="code" href="structserial_1_1_timeout.html#adc68e33d2f94bfa33ba1062c363b9151">serial::Timeout::max</a>(), 250, 0, 250, 0);
count = 0;
cout &lt;&lt; <span class="stringliteral">&quot;Timeout == 250ms, asking for 1 more byte than written.&quot;</span> &lt;&lt; endl;
<span class="keywordflow">while</span> (count &lt; 10) {
<span class="keywordtype">size_t</span> bytes_wrote = my_serial.write(test_string);
<span class="keywordtype">string</span> result = my_serial.read(test_string.length()+1);
cout &lt;&lt; <span class="stringliteral">&quot;Iteration: &quot;</span> &lt;&lt; count &lt;&lt; <span class="stringliteral">&quot;, Bytes written: &quot;</span>;
cout &lt;&lt; bytes_wrote &lt;&lt; <span class="stringliteral">&quot;, Bytes read: &quot;</span>;
cout &lt;&lt; result.length() &lt;&lt; <span class="stringliteral">&quot;, String read: &quot;</span> &lt;&lt; result &lt;&lt; endl;
count += 1;
}
<span class="comment">// Test the timeout at 250ms, but asking exactly for what was written</span>
count = 0;
cout &lt;&lt; <span class="stringliteral">&quot;Timeout == 250ms, asking for exactly what was written.&quot;</span> &lt;&lt; endl;
<span class="keywordflow">while</span> (count &lt; 10) {
<span class="keywordtype">size_t</span> bytes_wrote = my_serial.write(test_string);
<span class="keywordtype">string</span> result = my_serial.read(test_string.length());
cout &lt;&lt; <span class="stringliteral">&quot;Iteration: &quot;</span> &lt;&lt; count &lt;&lt; <span class="stringliteral">&quot;, Bytes written: &quot;</span>;
cout &lt;&lt; bytes_wrote &lt;&lt; <span class="stringliteral">&quot;, Bytes read: &quot;</span>;
cout &lt;&lt; result.length() &lt;&lt; <span class="stringliteral">&quot;, String read: &quot;</span> &lt;&lt; result &lt;&lt; endl;
count += 1;
}
<span class="comment">// Test the timeout at 250ms, but asking for 1 less than what was written</span>
count = 0;
cout &lt;&lt; <span class="stringliteral">&quot;Timeout == 250ms, asking for 1 less than was written.&quot;</span> &lt;&lt; endl;
<span class="keywordflow">while</span> (count &lt; 10) {
<span class="keywordtype">size_t</span> bytes_wrote = my_serial.write(test_string);
<span class="keywordtype">string</span> result = my_serial.read(test_string.length()-1);
cout &lt;&lt; <span class="stringliteral">&quot;Iteration: &quot;</span> &lt;&lt; count &lt;&lt; <span class="stringliteral">&quot;, Bytes written: &quot;</span>;
cout &lt;&lt; bytes_wrote &lt;&lt; <span class="stringliteral">&quot;, Bytes read: &quot;</span>;
cout &lt;&lt; result.length() &lt;&lt; <span class="stringliteral">&quot;, String read: &quot;</span> &lt;&lt; result &lt;&lt; endl;
count += 1;
}
<span class="keywordflow">return</span> 0;
}
</pre></div>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Aug 27 2012 11:36:46 for serial by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.0
</small></address>
</body>
</html>