linux串口编程-termios结构
linux串口编程简单起来可以十分简单,但是复杂起来,也可以异常复杂。因为linux串口不仅仅是个串口,它跟终端联系起来。一般串口编程,绕不开的是struct termios结构体,其定义如下:
#define NCCS 32
struct termios{tcflag_t c_iflag; /* input mode flags */tcflag_t c_oflag; /* output mode flags */tcflag_t c_cflag; /* control mode flags */tcflag_t c_lflag; /* local mode flags */cc_t c_line; /* line discipline */cc_t c_cc[NCCS]; /* control characters */speed_t c_ispeed; /* input speed */speed_t c_ospeed; /* output speed */
#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1};
以上结构体定义在/usr/include/bits/termios.h,一般我们编程的时候,引用/usr/include/termios.h即可,该头文件会自动引入bits/termios.h。
对于以上自定义类型,其定义如下:
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
结构中的c_iflag/c_oflag/c_cflag/c_lflag都是tcflag_t类型,本质就是个32位的无符号整数。每一个位用作特定的标志位。可想而知,光这些标志位,就多得跟饭一样。串口编程,其实也是了解熟悉这些标志位功能的过程。暂且先记录这么多,具体的位标志什么意义,待后续整理。
linux串口编程-termios结构相关推荐
- Linux 串口编程三 使用termios与API进行串口程序开发
在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...
- Linux 串口编程二 深入了解 termios
前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...
- Linux串口编程_termios
1.1 Linux串口编程主要是设置structtermios结构体的个成员值.Termios是在POSIX规范中定义的标准接口,表示终端设备(包括虚拟终端丶串口等),串口是一种终端设备,一般通过终端 ...
- Linux串口编程详解
Linux串口编程详解(阻塞模式.非阻塞模式.select函数) 之前一直觉得串口编程很简单,这两天仔细研究后发现串口里的各种参数还挺复杂,稍不注意就容易出错,这里总结一下网上的各种文章及自己的理解与 ...
- Linux 串口编程四 串口设备程序开发
Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...
- Linux串口编程 —— 发送的数据无法被接收,且被原封不动返回
Linux串口编程--发送的数据无法被接收,且被原封不动返回 问题描述 使用 #include <fcntl.h> /*文件控制定义*/ #include <termios.h> ...
- 嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解
在上一篇文章中,我们介绍了串口的一些基本知识.串口配置接口 termios结构体的概念,串口的配置参数有n多个,这里面不用都背下来,什么时候使用,翻看手册即可,但是有两个 参数是一定要理解的,就是VM ...
- Linux 串口编程一 一些背景
在大部分讲解 Linux 编程书籍的时候会发现没有单独的串口编程章节,实际上串口编程已经被概括在了"终端"或者"终端IO"章节里面.在上一篇博客中对经常出现的几 ...
- 嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能
上一篇文章中,我们详细分析了VTIM和VMIN的功能, <嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解> 也明白了这两个参数设计的初衷和使用方法,接下来 ...
最新文章
- 【老鸟分享】Linux命令行终端提示符多种实用技巧!
- 关于python的打包打包完生成exe文件之后,不能正常执行程序的问题解决。
- redis 登录注册
- 在linux上安装cuda的时候报错:Existing package manager installation of the driver found.
- 2000坐标系xy坐标几位_2000国家大地坐标系转换演示及实践应用专题培训研讨班...
- 小程序开发实战学习笔记
- MII/MDIO接口详解(转)
- 每个Java开发人员都必须避免的9个安全错误
- Java Hashtable size()方法与示例
- PyMC3实现贝叶斯神经网络
- 专题导读:大数据创新实践
- U盘被写保护的解决办法
- Unable to establish loopback connection异常解决
- 【干货】京东电商推荐系统的应用实践.pdf(附下载链接)
- expec不管异常 try_JUnit测试异常
- spring里restTemplate向目的URL发送post请求
- 网际风全推数据接口_网际风飞狐全推接口
- zzuli OJ 2331:小新同学的智商
- 高数_第3章重积分_在柱面坐标下计算三重积分
- 百度年龄计算机在线使用,百度精准年龄计算器在线计算app