免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 835 | 回复: 0
打印 上一主题 下一主题

Linux串口通信(5) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-17 10:39 |只看该作者 |倒序浏览

7.4读串口
读串口是通过read函数来完成的
read函数
头文件
#include
函数原型
ssize_t read(int filedes, void *buff, size_t nbytes);
参数
int filedes - 文件描述符
void *buff - 存储读取数据的数据缓冲区
size_t nbytes - 需要读取的字节数
返回值
ssize_t - 成功读取返回读取的字节数,否则返回-1
注意,在对串口进行读取操作的时候,如果是使用的RAW模式,每个read系统调用将返回当前串行输入缓冲区中存在的字节数。如果没有数据,将会一致阻塞到有字符达到或者间隔时钟到期,或者发生错误。如果想使read函数在没有数据的时候立即返回则可以使用fcntl函数来设置文件访问属性。例如:
fcntl(fd, F_SETFL, FNDELAY);
这样设置后,当没有可读取的数据时,read函数立即返回0。
通过fcntl(fd, F_SETFL, 0)可以设置回一般状态。
例如:从终端读取5个字节的应答数据
int nRead; /* 从终端读取的字节数 */
char buffer[256]; /* 接收缓冲区 */
nRead = read(fd, buffer, 5);
if(nRead == -1)
{
fprintf(stderr, "Read answer message error.\n");
}
八、终端配置
8.1 POSIX终端接口
大多数系统都支持POSIX终端接口,POSIX终端通过一个termios结构来进行控制,该结构定义在termios.h文件中。
termios结构
struct termios
{
tcflag_t c_iflag; /* 输入选项标志 */
tcflag_t c_oflag; /* 输出选项标志 */
tcflag_t c_cflag; /* 控制选项标志 */
tcflag_t c_lflag; /* 本地选项标志 */
cc_t c_cc[NCCS]; /* 控制特性 */
};


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/37319/showart_341561.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP