linux:tcgetattr 函数功能和使用场景

#include <termios.h>
该函数用到 struct termios 该数据结构

/*定义一个termios结构体*/
struct termios options;
/*将文件描述符的属性放入该结构体*/
tcgetattr(fd,&options);
/*修改相应的属性*/
cfsetispeed(&options,B4800);
cfsetospeed(&options,B4800);
options.c_cflag |= CLOCAL;//保证程序不占用串口
options.c_cflag |= CREAD;//保证程序可以从串口中读取数据
options.c_cflag &= ~CRTSCTS;//不进行流控制
options.c_cflag |= CRTSCTS;//进行硬件流控制
options.c_cflag |= IXON|IXOFF|IXANY;//进行软件流控制
options.c_cflag &= ~CSIZE;//屏蔽其它标志位
options.c_cflag |= CS5;
options.c_cflag &= ~CSIZE;//屏蔽其它标志位
options.c_cflag |= CS6;
options.c_cflag &= ~CSIZE;//屏蔽其它标志位
options.c_cflag |= CS7;
options.c_cflag &= ~CSIZE;//屏蔽其它标志位
options.c_cflag |= CS8;
options.c_cflag &= ~PARENB;//PARENB:产生奇偶位,执行奇偶校验
options.c_cflag &= ~INPCK;//INPCK:使奇偶校验起作用
/*设为空格,即停止位为2位*/
options.c_cflag &= ~PARENB;//PARENB:产生奇偶位,执行奇偶校验
options.c_cflag &= ~CSTOPB;//CSTOPB:使用两位停止位
/*设置奇校验*/
options.c_cflag |= PARENB;//PARENB:产生奇偶位,执行奇偶校验
options.c_cflag |= PARODD;//PARODD:若设置则为奇校验,否则为偶校验
options.c_cflag |= INPCK;//INPCK:使奇偶校验起作用
options.c_cflag |= ISTRIP;//ISTRIP:若设置则有效输入数字被剥离7个字节,否则保留全部8位
/*设置偶校验*/
options.c_cflag |= PARENB;//PARENB:产生奇偶位,执行奇偶校验
options.c_cflag &= ~PARODD;//PARODD:若设置则为奇校验,否则为偶校验
options.c_cflag |= INPCK;//INPCK:使奇偶校验起作用
options.c_cflag |= ISTRIP;//ISTRIP:若设置则有效输入数字被剥离7个字节,否则保留全部8位
    /*设置停止位*/
options.c_cflag &= ~CSTOPB;//CSTOPB:使用两位停止位
options.c_cflag |= CSTOPB;//CSTOPB:使用两位停止位
    /*设置输出模式为原始输出*/
options.c_oflag &= ~OPOST;//OPOST:若设置则按定义的输出处理,否则所有c_oflag失效
    /*设置本地模式为原始模式*/
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
    /*
     *ICANON:允许规范模式进行输入处理
     *ECHO:允许输入字符的本地回显
     *ECHOE:在接收EPASE时执行Backspace,Space,Backspace组合
     *ISIG:允许信号
     */
/*设置等待时间和最小接受字符*/
options.c_cc[VTIME] = 0;//可以在select中设置
options.c_cc[VMIN] = 1;//最少读取一个字符
/*如果发生数据溢出,只接受数据,但是不进行读操作*/
tcflush(fd,TCIFLUSH);
/*将结构体写回文件描述符,激活配置*/
tcsetattr(fd,TCSANOW,&options)

uart串口通信的初始化设置示例代码
https://blog.csdn.net/u010360266/article/details/107084561

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值