⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial_driver.html

📁 ADI 公司blackfin系列的用户使用文挡。
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head>  <title></title>  <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />  <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />  <link rel="stylesheet" media="print" type="text/css" href="./print.css" />  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><a href=start.html>start</a></br><h1><a name="blackfin_serial_driver" id="blackfin_serial_driver">Blackfin Serial Driver</a></h1><div class="level1"><p> The serial driver for the Blackfin works like any other serial driver for Linux, and can be controlled with the termio, as defined, in the <a href="http://www.opengroup.org/pubs/online/7908799/xsh/termios.h.html" class="urlextern" title="http://www.opengroup.org/pubs/online/7908799/xsh/termios.h.html"  rel="nofollow">termios.h</a> man page.</p><p>For detailed information, check out the <a href="http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/intro.html" class="urlextern" title="http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/intro.html"  rel="nofollow">Serial Programming HOWTO</a> or the <a href="http://www.easysw.com/~mike/serial/" class="urlextern" title="http://www.easysw.com/~mike/serial/"  rel="nofollow">Serial Programming Guide for POSIX Operating Systems</a>.</p><p>This code example runs, and was borrowed from <a href="http://docs.linux.cz/programming/c/unix_examples/termstuff.html" class="urlextern" title="http://docs.linux.cz/programming/c/unix_examples/termstuff.html"  rel="nofollow">http://docs.linux.cz/programming/c/unix_examples/termstuff.html</a>, and show be able to provide a basic info on how to use/control the serial port.</p><pre class="code c"><span class="coMULTI">/* termstuff.c - omnibus demo of various terminal operations. */</span><span class="co2">#include &lt;stdio.h&gt;</span><span class="co2">#include &lt;termios.h&gt;</span><span class="co2">#include &lt;unistd.h&gt;</span><span class="co2">#include &lt;stdlib.h&gt;</span>&nbsp;<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>        <span class="kw4">struct</span> termios oldmodes, newmodes;        tcflag_t iflag<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> ICRNL, ISTRIP, BRKINT, IGNPAR, IMAXBEL, IXANY, <span class="nu0">0</span> <span class="br0">&#125;</span>;        <span class="kw4">char</span> * iflagname<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span><span class="st0">"ICRNL"</span>, <span class="st0">"ISTRIP"</span>, <span class="st0">"BRKINT"</span>, <span class="st0">"IGNPAR"</span>, <span class="st0">"IMAXBEL"</span>,                        <span class="st0">"IXANY"</span> , <span class="br0">&#40;</span><span class="kw4">char</span> *<span class="br0">&#41;</span> <span class="nu0">0</span><span class="br0">&#125;</span>;        <span class="kw4">char</span> buf<span class="br0">&#91;</span><span class="nu0">81</span><span class="br0">&#93;</span>;        <span class="kw4">int</span> i;        tcflag_t oflag<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> OCRNL, OLCUC, ONLCR, <span class="nu0">0</span> <span class="br0">&#125;</span>;        <span class="kw4">char</span> * oflagname<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span><span class="st0">"OCRNL"</span>, <span class="st0">"OLCUC"</span>, <span class="st0">"ONLCR"</span>, <span class="br0">&#40;</span><span class="kw4">char</span> *<span class="br0">&#41;</span> <span class="nu0">0</span><span class="br0">&#125;</span>;&nbsp;        <span class="coMULTI">/* Don't allow cheating. */</span>        <span class="kw1">if</span><span class="br0">&#40;</span> !isatty<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>        <span class="br0">&#123;</span>                fprintf<span class="br0">&#40;</span>stderr,<span class="st0">"stdin must be a terminal<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;                <span class="kw1">return</span> <span class="nu0">1</span>;        <span class="br0">&#125;</span>&nbsp;        <span class="coMULTI">/* Terminal name functions. */</span>        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"ctermid(NULL) = %s<span class="es0">\n</span>"</span>, ctermid<span class="br0">&#40;</span><span class="kw2">NULL</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"ttyname(0) = %s<span class="es0">\n</span>"</span>, ttyname<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;&nbsp;        <span class="coMULTI">/* Of course, the easy way to see how your terminal is set up is */</span>        system<span class="br0">&#40;</span><span class="st0">"stty -a"</span><span class="br0">&#41;</span>;&nbsp;        <span class="kw1">if</span><span class="br0">&#40;</span> tcgetattr<span class="br0">&#40;</span><span class="nu0">0</span>, &amp;oldmodes<span class="br0">&#41;</span> &lt; <span class="nu0">0</span><span class="br0">&#41;</span>        <span class="br0">&#123;</span>                perror<span class="br0">&#40;</span><span class="st0">"tcgetattr"</span><span class="br0">&#41;</span>;                <span class="kw1">return</span> <span class="nu0">1</span>;        <span class="br0">&#125;</span>&nbsp;        <span class="coMULTI">/* Look at some iflag settings. */</span>        <span class="kw1">for</span><span class="br0">&#40;</span> i = <span class="nu0">0</span>; iflag<span class="br0">&#91;</span>i<span class="br0">&#93;</span> != <span class="kw2">NULL</span>; i ++<span class="br0">&#41;</span>        <span class="br0">&#123;</span>                <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"%s is %s<span class="es0">\n</span>"</span>,                         iflagname<span class="br0">&#91;</span>i<span class="br0">&#93;</span>,                         iflag<span class="br0">&#91;</span>i<span class="br0">&#93;</span> &amp; oldmodes.<span class="me1">c_iflag</span> ? <span class="st0">"on"</span> : <span class="st0">"off"</span><span class="br0">&#41;</span>;        <span class="br0">&#125;</span>&nbsp;        <span class="coMULTI">/* Turn off ICRNL and see what happens. */</span>        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"Enter won't work as usual - use ^J to get a line accepted.<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"About to read two lines:<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        newmodes = oldmodes;        newmodes.<span class="me1">c_iflag</span> &amp;= ~ICRNL;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;newmodes<span class="br0">&#41;</span>;        gets<span class="br0">&#40;</span>buf<span class="br0">&#41;</span>;        gets<span class="br0">&#40;</span>buf<span class="br0">&#41;</span>;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;oldmodes<span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"OK, ICRNL now back on.<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"Reading another line:<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        gets<span class="br0">&#40;</span>buf<span class="br0">&#41;</span>;&nbsp;        <span class="coMULTI">/* Look at some oflag settings. */</span>        <span class="kw1">for</span><span class="br0">&#40;</span> i = <span class="nu0">0</span>; oflag<span class="br0">&#91;</span>i<span class="br0">&#93;</span> != <span class="kw2">NULL</span>; i ++<span class="br0">&#41;</span>        <span class="br0">&#123;</span>                <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"%s is %s<span class="es0">\n</span>"</span>,                         oflagname<span class="br0">&#91;</span>i<span class="br0">&#93;</span>,                         oflag<span class="br0">&#91;</span>i<span class="br0">&#93;</span> &amp; oldmodes.<span class="me1">c_oflag</span> ? <span class="st0">"on"</span> : <span class="st0">"off"</span><span class="br0">&#41;</span>;        <span class="br0">&#125;</span>&nbsp;        <span class="coMULTI">/* Turn ONLCR off and see what happens. */</span>        newmodes = oldmodes;        newmodes.<span class="me1">c_oflag</span> &amp;= ~ONLCR;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;newmodes<span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"There is a <span class="es0">\\</span>n right here =&gt;<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"This would be a new line<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;oldmodes<span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"Are we back to normal?<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"Are we?<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;&nbsp;        <span class="coMULTI">/* Turn ECHO off. */</span>        newmodes = oldmodes;        newmodes.<span class="me1">c_lflag</span> &amp;= ~ECHO;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;newmodes<span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"Enter something: "</span><span class="br0">&#41;</span>;        gets<span class="br0">&#40;</span>buf<span class="br0">&#41;</span>;        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">"You entered %s<span class="es0">\n</span>"</span>, buf<span class="br0">&#41;</span>;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;oldmodes<span class="br0">&#41;</span>;&nbsp;        <span class="coMULTI">/* Turn ECHOCTL on. */</span>        newmodes = oldmodes;        newmodes.<span class="me1">c_lflag</span> |= ECHOCTL;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;newmodes<span class="br0">&#41;</span>;        gets<span class="br0">&#40;</span>buf<span class="br0">&#41;</span>;        tcsetattr<span class="br0">&#40;</span><span class="nu0">0</span>, TCSANOW, &amp;oldmodes<span class="br0">&#41;</span>;&nbsp;        <span class="kw1">return</span> <span class="nu0">0</span>;<span class="br0">&#125;</span></pre></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -