<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[如何实现linux下的串口中断编程的示例代码]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 07 Apr 2010 15:46:43 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/><div class="code">#include &lt;stdio.h&gt; <br/>#include &lt;stdlib.h&gt; <br/>#include &lt;unistd.h&gt; <br/>#include &lt;fcntl.h&gt; <br/>#include &lt;termios.h&gt;<br/>#define BAUDRATE B38400 <br/>#define MODEMDEVICE &quot;/dev/ttyS1&quot; <br/>#define _POSIX_SOURCE 1 /* POSIX 系统相容 */ <br/>#define FALSE 0 <br/>#define TRUE 1 <br/><br/>volatile int STOP=FALSE;&nbsp;&nbsp;<br/><br/>void signal_handler_IO (int status);&nbsp;&nbsp; /* 定义讯号处理程序 */ <br/>int wait_flag=TRUE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 没收到讯号的话就会是 TRUE */ <br/><br/>main() <br/>&#123; <br/>&nbsp;&nbsp;int fd,c, res; <br/>&nbsp;&nbsp;struct termios oldtio,newtio; <br/>&nbsp;&nbsp;struct sigaction saio;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* definition of signal action */ <br/>&nbsp;&nbsp;char buf&#91;255&#93;; <br/><br/>&nbsp;&nbsp;/* 开启装置为 non-blocking (读取功能会马上结束返回) */ <br/>&nbsp;&nbsp;fd = open(MODEMDEVICE, O_RDWR &#124; O_NOCTTY &#124; O_NONBLOCK); <br/>&nbsp;&nbsp;if (fd &lt;0) &#123;perror(MODEMDEVICE); exit(-1); &#125; <br/><br/>&nbsp;&nbsp;/* 在使装置非同步化前, 安装讯号处理程序 */ <br/>&nbsp;&nbsp;saio.sa_handler = signal_handler_IO; <br/>&nbsp;&nbsp;saio.sa_mask = 0; <br/>&nbsp;&nbsp;saio.sa_flags = 0; <br/>&nbsp;&nbsp;saio.sa_restorer = NULL; <br/>&nbsp;&nbsp;sigaction(SIGIO,&amp;saio,NULL); <br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;/* 允许行程去接收 SIGIO 讯号*/ <br/>&nbsp;&nbsp;fcntl(fd, F_SETOWN, getpid()); <br/>&nbsp;&nbsp;/* 使档案ake the file descriptor 非同步 (使用手册上说只有 O_APPEND 及 <br/>&nbsp;&nbsp;O_NONBLOCK, 而 F_SETFL 也可以用...) */ <br/>&nbsp;&nbsp;fcntl(fd, F_SETFL, FASYNC); <br/><br/>&nbsp;&nbsp;tcgetattr(fd,&amp;oldtio); /* 储存目前的序列埠设定值 */ <br/>&nbsp;&nbsp;/* 设定新的序列埠为标准输入程序 */ <br/>&nbsp;&nbsp;newtio.c_cflag = BAUDRATE &#124; CRTSCTS &#124; CS8 &#124; CLOCAL &#124; CREAD; <br/>&nbsp;&nbsp;newtio.c_iflag = IGNPAR &#124; ICRNL; <br/>&nbsp;&nbsp;newtio.c_oflag = 0; <br/>&nbsp;&nbsp;newtio.c_lflag = ICANON; <br/>&nbsp;&nbsp;newtio.c_cc&#91;VMIN&#93;=1; <br/>&nbsp;&nbsp;newtio.c_cc&#91;VTIME&#93;=0; <br/>&nbsp;&nbsp;tcflush(fd, TCIFLUSH); <br/>&nbsp;&nbsp;tcsetattr(fd,TCSANOW,&amp;newtio); <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/* 等待输入讯号的回圈. 很多有用的事我们将在这做 */&nbsp;&nbsp;<br/>&nbsp;&nbsp;while (STOP==FALSE) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;.&#92;n&quot;);usleep(100000); <br/>&nbsp;&nbsp;&nbsp;&nbsp;/* 在收到 SIGIO 後, wait_flag = FALSE, 输入讯号存在则可以被读取 */ <br/>&nbsp;&nbsp;&nbsp;&nbsp;if (wait_flag==FALSE) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res = read(fd,buf,255); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf&#91;res&#93;=0; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;:%s:%d&#92;n&quot;, buf, res); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (res==1) STOP=TRUE; /* 如果只输入 CR 则停止回圈 */ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait_flag = TRUE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 等待新的输入讯号 */ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;/* 回存旧的序列埠设定值 */ <br/>&nbsp;&nbsp;tcsetattr(fd,TCSANOW,&amp;oldtio); <br/>&#125; </div>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 如何实现linux下的串口中断编程的示例代码]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>