- 论坛徽章:
- 0
|
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 |
|