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结构相关推荐

  1. Linux 串口编程三 使用termios与API进行串口程序开发

    在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...

  2. Linux 串口编程二 深入了解 termios

    前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...

  3. Linux串口编程_termios

    1.1 Linux串口编程主要是设置structtermios结构体的个成员值.Termios是在POSIX规范中定义的标准接口,表示终端设备(包括虚拟终端丶串口等),串口是一种终端设备,一般通过终端 ...

  4. Linux串口编程详解

    Linux串口编程详解(阻塞模式.非阻塞模式.select函数) 之前一直觉得串口编程很简单,这两天仔细研究后发现串口里的各种参数还挺复杂,稍不注意就容易出错,这里总结一下网上的各种文章及自己的理解与 ...

  5. Linux 串口编程四 串口设备程序开发

    Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...

  6. Linux串口编程 —— 发送的数据无法被接收,且被原封不动返回

    Linux串口编程--发送的数据无法被接收,且被原封不动返回 问题描述 使用 #include <fcntl.h> /*文件控制定义*/ #include <termios.h> ...

  7. 嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解

    在上一篇文章中,我们介绍了串口的一些基本知识.串口配置接口 termios结构体的概念,串口的配置参数有n多个,这里面不用都背下来,什么时候使用,翻看手册即可,但是有两个 参数是一定要理解的,就是VM ...

  8. Linux 串口编程一 一些背景

    在大部分讲解 Linux 编程书籍的时候会发现没有单独的串口编程章节,实际上串口编程已经被概括在了"终端"或者"终端IO"章节里面.在上一篇博客中对经常出现的几 ...

  9. 嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能

    上一篇文章中,我们详细分析了VTIM和VMIN的功能, <嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解> 也明白了这两个参数设计的初衷和使用方法,接下来 ...

最新文章

  1. 【老鸟分享】Linux命令行终端提示符多种实用技巧!
  2. 关于python的打包打包完生成exe文件之后,不能正常执行程序的问题解决。
  3. redis 登录注册
  4. 在linux上安装cuda的时候报错:Existing package manager installation of the driver found.
  5. 2000坐标系xy坐标几位_2000国家大地坐标系转换演示及实践应用专题培训研讨班...
  6. 小程序开发实战学习笔记
  7. MII/MDIO接口详解(转)
  8. 每个Java开发人员都必须避免的9个安全错误
  9. Java Hashtable size()方法与示例
  10. PyMC3实现贝叶斯神经网络
  11. 专题导读:大数据创新实践
  12. U盘被写保护的解决办法
  13. Unable to establish loopback connection异常解决
  14. 【干货】京东电商推荐系统的应用实践.pdf(附下载链接)
  15. expec不管异常 try_JUnit测试异常
  16. spring里restTemplate向目的URL发送post请求
  17. 网际风全推数据接口_网际风飞狐全推接口
  18. zzuli OJ 2331:小新同学的智商
  19. 高数_第3章重积分_在柱面坐标下计算三重积分
  20. 百度年龄计算机在线使用,百度精准年龄计算器在线计算app

热门文章

  1. Unity:从入门到入行【全面总结,建议收藏】
  2. WPS2016怎么固定/锁定表头_WPS如何设置行和列固定不动
  3. 自动化专业学计算机技术,自动化专业学什么?大学自动化专业主要学什么
  4. Robomongo的安装及简单使用
  5. Spring Boot集成第三方登录之微信登录
  6. 内存管理 - mblock算法
  7. python aes解密脚本
  8. WHAT DOES A SINGLE LIGHT-RAY REVEAL ABOUT A TRANSPARENT OBJECT
  9. java URLEncoder转码
  10. 复旦大学陈果《爱情》语录