Linux 串口编程<二> 深入了解 termios

本文主要介绍了Linux串口编程中的termios接口,详细解析了输入模式、输出模式、控制模式、本地模式等,以及特殊控制字符、VTIME和VMIN的设置,并提到了在shell下使用stty命令进行终端模式访问。
摘要由CSDN通过智能技术生成

前言

这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识。如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈。关于 tty驱动架构参见我的其他博客:Linux tty驱动程序架构。有时了解下底层以及实现方式对于应用层编程的帮助也是大有裨益的。之前博客讲了终端,tty,控制台等概念以及区别,因此在串口编程相关章节中提及串口,有时也会用终端,tty等来替代,注意它们实际上所指是相同的。

在 Linux 中可以通过一组函数调用(通用终端接口,简称GTI)来控制终端,这组函数调用与用于读写数据的函数是分离的,这就使得读写数据的接口非常简洁,同时又允许可以对终端或串口的行为进行更精细地控制。但由于需要支持大量不同类型的硬件,GTI 中实现的 IO 接口却不简洁。

详解 termios

termios 是在 POSIX 规范中定义的标准接口,它类似与 System V 中的 termio 接口。通过设置 termios 类型的数据结构中的值和使用一小组函数调用,就可以对终端接口进行控制。termios 的结构体定义以及相关函数调用参见 termios.h 头文件。termios 结构的定义如下:


如定义所示,影响终端的参数按照不同模式分成如下几类:

  • 输入模式
  • 输出模式
  • 控制模式
  • 本地模式
  • 线路规程
  • 特殊控制字符
  • 输入速率
  • 输出速率

输入模式

输入模式控制输入数据(终端驱动程序从串行口或键盘接收到的字符)在被传递给程序之前的处理方式。通过设置 termios 结构中 c_iflag 成员的标志对它们进行控制。所有的标志都被定义为宏,这也是所有终端模式都采用的方法。可用于 c_iflag 成员的宏如下所示:

  • BRKINT:当在输入行中检测到一个终止状态(连接丢失)时,产生一个中断。
  • IGNBRK:忽略输入行中的终止状态。
  • ICRNL:将接收到的回车符转换为新行符。
  • IGNCR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值