mirror of
https://github.com/wjwwood/serial.git
synced 2026-01-22 19:54:57 +08:00
308 lines
15 KiB
HTML
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
|
|
 <span id="projectnumber">1.0</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 Page</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Data 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 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </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 <string></code><br/>
|
|
<code>#include <iostream></code><br/>
|
|
<code>#include <cstdio></code><br/>
|
|
<code>#include <unistd.h></code><br/>
|
|
<code>#include "<a class="el" href="serial_8h_source.html">serial/serial.h</a>"</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 </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 </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 </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 </td>
|
|
<td class="paramname"><em>argc</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">char ** </td>
|
|
<td class="paramname"><em>argv</em> </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 &e) {
|
|
cerr << <span class="stringliteral">"Unhandled Exception: "</span> << e.what() << 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 </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 </td>
|
|
<td class="paramname"><em>argc</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">char ** </td>
|
|
<td class="paramname"><em>argv</em> </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 < 3) {
|
|
cerr << <span class="stringliteral">"Usage: test_serial <serial port address> "</span>;
|
|
cerr << <span class="stringliteral">"<baudrate> [test string]"</span> << 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">"%lu"</span>, &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, 1000);
|
|
|
|
cout << <span class="stringliteral">"Is the serial port open?"</span>;
|
|
<span class="keywordflow">if</span>(my_serial.isOpen())
|
|
cout << <span class="stringliteral">" Yes."</span> << endl;
|
|
<span class="keywordflow">else</span>
|
|
cout << <span class="stringliteral">" No."</span> << 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">"Testing."</span>;
|
|
}
|
|
|
|
<span class="comment">// Test the timeout, there should be 1 second between prints</span>
|
|
cout << <span class="stringliteral">"Timeout == 1000ms, asking for 1 more byte than written."</span> << endl;
|
|
<span class="keywordflow">while</span> (count < 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 << <span class="stringliteral">"Iteration: "</span> << count << <span class="stringliteral">", Bytes written: "</span>;
|
|
cout << bytes_wrote << <span class="stringliteral">", Bytes read: "</span>;
|
|
cout << result.length() << <span class="stringliteral">", String read: "</span> << result << endl;
|
|
|
|
count += 1;
|
|
}
|
|
|
|
<span class="comment">// Test the timeout at 250ms</span>
|
|
my_serial.setTimeout(250);
|
|
count = 0;
|
|
cout << <span class="stringliteral">"Timeout == 250ms, asking for 1 more byte than written."</span> << endl;
|
|
<span class="keywordflow">while</span> (count < 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 << <span class="stringliteral">"Iteration: "</span> << count << <span class="stringliteral">", Bytes written: "</span>;
|
|
cout << bytes_wrote << <span class="stringliteral">", Bytes read: "</span>;
|
|
cout << result.length() << <span class="stringliteral">", String read: "</span> << result << endl;
|
|
|
|
count += 1;
|
|
}
|
|
|
|
<span class="comment">// Test the timeout at 250ms, but asking exactly for what was written</span>
|
|
count = 0;
|
|
cout << <span class="stringliteral">"Timeout == 250ms, asking for exactly what was written."</span> << endl;
|
|
<span class="keywordflow">while</span> (count < 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 << <span class="stringliteral">"Iteration: "</span> << count << <span class="stringliteral">", Bytes written: "</span>;
|
|
cout << bytes_wrote << <span class="stringliteral">", Bytes read: "</span>;
|
|
cout << result.length() << <span class="stringliteral">", String read: "</span> << result << endl;
|
|
|
|
count += 1;
|
|
}
|
|
|
|
<span class="comment">// Test the timeout at 250ms, but asking for 1 less than what was written</span>
|
|
count = 0;
|
|
cout << <span class="stringliteral">"Timeout == 250ms, asking for 1 less than was written."</span> << endl;
|
|
<span class="keywordflow">while</span> (count < 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 << <span class="stringliteral">"Iteration: "</span> << count << <span class="stringliteral">", Bytes written: "</span>;
|
|
cout << bytes_wrote << <span class="stringliteral">", Bytes read: "</span>;
|
|
cout << result.length() << <span class="stringliteral">", String read: "</span> << result << endl;
|
|
|
|
count += 1;
|
|
}
|
|
|
|
<span class="keywordflow">return</span> 0;
|
|
}
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
|
|
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Sat Jun 9 2012 19:35:04 for serial by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.0
|
|
</small></address>
|
|
|
|
</body>
|
|
</html>
|