一、函数名称:

int tcgetattr(int fd, struct termios *termios_p);

二、函数功能:

The termios functions describe a general terminal interface that is provided to control asynchronous communications ports.

用于获取与终端相关的参数,提供异步通讯接口

三、头文件

termios.h
unistd.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)==-)
{
perror("Cannot get standard input description.");
return ;
} term.c_cc[VEOF] = (cc_t)0x07;
err = tcsetattr(STDIN_FILENO, TCSAFLUSH, &term);
if(err==- && err==EINTR)
{
perror("Failed to change EOF character.");
return ;
} return ;
}
运行后可以使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

tcgetattr学习的更多相关文章

  1. ROS_Kinetic_29 kamtoa simulation学习与示例分析(一)

    致谢源代码网址:https://github.com/Tutorgaming/kamtoa-simulation kamtoa simulation学习与示例分析(一) 源码学习与分析是学习ROS,包 ...

  2. Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号

    Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号 背景 上一讲我们介绍了Unix IPC中的2种管道. 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道 ...

  3. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  4. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  5. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  6. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  9. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

随机推荐

  1. @RequestParam和@PathVariable的区别

    一:@RequestParam @RequestParam是传递参数的. @RequestParam用于将请求参数区数据映射到功能处理方法的参数上. public Object Login(@Requ ...

  2. Oracle参数

    v$parameter 显示当前在运行的实例中生效的参数值. v$spparameter 显示磁盘上spfile中存储的值. 通常是相同的. select p.NAME,p.VALUE,p.ISDEF ...

  3. PCB六层板学习(一)

    一.原理图的网表导出及版本转换 安装Cadence后,打开RK3288的原理图. 首先点击rk3288-mid.dsn >> 然后有一个Create netlist的图标(当然咋Tools ...

  4. STM32输入捕获TIM2四通道

    相比于一通道,原子的例程里因为清了计数时间,所以要对程序进行修改. 记录上升沿后的计数,然后记录下降沿的计数.相减后计算高电平时间,对于定时器中断间隔的边界要分开处理. 这里因为我的接收机时间是1ms ...

  5. 使用C#实现网站用户登录

    我们在写灌水机器人.抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录.那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的.H ...

  6. LOJ 2304 「NOI2017」泳池——思路+DP+常系数线性齐次递推

    题目:https://loj.ac/problem/2304 看了各种题解…… \( dp[i][j] \) 表示有 i 列.第 j 行及以下默认合法,第 j+1 行至少有一个非法格子的概率,满足最大 ...

  7. SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

    20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web ...

  8. 基础复习之HTML (meta标签、块级元素与行内元素)

    一.meta标签 SEO 如何在不使用JS的情况下刷新页面(http-equiv="refresh" , content="time") 设置页面缓存 移动端设 ...

  9. Jenkins构建触发器的区别

    Build periodically:定时进行项目构建或执行(它不care源码是否发生变化),配置如下: 0 2 * * *  (每天2:00 必须build一次源码) 如果是要定时执行脚本,需要选择 ...

  10. Mac版-Jdk安装与环境配置

    下载安装 oracle官网下载,地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 下载好后,点击安装包,一直 ...