一、函数名称:
int tcgetattr(int fd, struct termios *termios_p);二、函数功能:
The termios functions describe a general terminal interface that is provided to control asynchronous communications ports.
用于获取与终端相关的参数,提供异步通讯接口
unistd.h
0:成功
-1:错误,
struct termios *termios_p:返回值保留在termios结构体中:
tcflag_t c_iflag; /* input modes */ 输入模式标识
运行后可以使ctrl+D不起作用,使用ctrl+G替代ctrl+D.
函数tcsetattr 可以设置串口的结构属性,tcgetatt( ) 可以得到串口的结构属性。在termios 结构中,最重要的是c_cflag,用户通过对其进行赋值可以实现串口波特率、数据位、停止位、奇偶校验位等参数的设置。c_cc 数组中的两个变量VMIN 和VTIME 判断是否返回输入,c _cc[VTIME]设定字节输入时间计时器,c _cc[VMIN]设定满足读取功能的最低接收字节数。这两个变量的值要设定合理,才能保证串口的通信成功率。
http://www.hqew.com/tech/sheji/660631.html
三、头文件
termios.hunistd.h
四、返回值
0:成功
-1:错误,
五、参数说明
fd:文件描述符struct termios *termios_p:返回值保留在termios结构体中:
tcflag_t c_iflag; /* input modes */ 输入模式标识
tcflag_t c_oflag; /* output modes */ 输出
tcflag_t c_cflag; /* control modes */ 控制
tcflag_t c_lflag; /* local modes */ 本地
cc_t c_cc[NCCS]; /* special characters */ 控制字符,保存中断驱动程序中的特殊字符
六、示例程序:
- #include <stdio.h>
- #include <termios.h>
- #include <unistd.h>
- #include <errno.h>
-
- int main(void)
- {
- struct termios term; //get terminal interface
- int err;
-
- if(tcgetattr(STDIN_FILENO, &term)==-1)
- {
- perror("Cannot get standard input description.");
- return 1;
- }
-
- term.c_cc[VEOF] = (cc_t)0x07;
- err = tcsetattr(STDIN_FILENO, TCSAFLUSH, &term);
- if(err==-1 && err==EINTR)
- {
- perror("Failed to change EOF character.");
- return 1;
- }
-
- return 0;
- }
七、补充:
函数tcsetattr 可以设置串口的结构属性,tcgetatt( ) 可以得到串口的结构属性。在termios 结构中,最重要的是c_cflag,用户通过对其进行赋值可以实现串口波特率、数据位、停止位、奇偶校验位等参数的设置。c_cc 数组中的两个变量VMIN 和VTIME 判断是否返回输入,c _cc[VTIME]设定字节输入时间计时器,c _cc[VMIN]设定满足读取功能的最低接收字节数。这两个变量的值要设定合理,才能保证串口的通信成功率。
http://www.hqew.com/tech/sheji/660631.html
给主人留下些什么吧!~~
评论热议