串口通信参数设置(1)

本文详细介绍了Linux下串口通信参数struct termios的结构、作用及各个成员的值,包括输入模式c_iflag、输出模式c_oflag、控制模式c_cflag和局部模式c_lflag,以及特殊控制字符c_cc的功能。通过对这些参数的理解,可以更好地进行串口通信配置。
摘要由CSDN通过智能技术生成

串口通信参数指的是波特率、数据位、奇偶校验位和停止位,

对串口实现控制的时候要用到termio结构体。

1、struct termios结构体

一、数据成员

 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结

构包含了至少下列成员: 
                tcflag_t c_iflag;      /* 输入模式 */
                tcflag_t c_oflag;      /* 输出模式 */
                tcflag_t c_cflag;      /* 控制模式 */
                tcflag_t c_lflag;      /* 本地模式 */
                cc_t c_cc[NCCS];       /* 控制字符 */
                
                struct termios
                {unsigned short c_iflag; /* 输入模式标志*/
                unsigned short c_oflag; /* 输出模式标志*/
                unsigned short c_cflag; /* 控制模式标志*/
                unsigned short c_lflag; /*区域模式标志或本地模式标志或局部模式*/
                unsigned char c_line; /*行控制line discipline */
                unsigned char c_cc[NCC]; /* 控制字符特性*/
                };

 二、作用
                这个变量被用来提供一个健全的线路设置集合, 如果这个端口在被用户初始化前
                使用. 驱动初始化这个变量使用一个标准的数值集, 它拷贝自 tty_std_termios
                变量. tty_std_termos 在 tty 核心被定义为:
                
                struct termios tty_std_termios = {
                 .c_iflag = ICRNL | IXON,
                 .c_oflag = OPOST | ONLCR,
                 .c_cflag = B38400 | CS8 | CREAD | HUPCL,
                 .c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK |
                 ECHOCTL | ECHOKE | IEXTEN,
                 .c_cc = INIT_C_CC
                };
                这个 struct termios 结构用来持有所有的当前线路设置, 给这个 tty 设备的一个特定端口. 

这些线路设置控制当前波特率, 数据大小, 数据流控设置, 以及许多其他值. 

 三、成员的值
                (一)c_iflag 标志常量:  Input mode ( 输入模式)
                input mode可以在输入值传给程序之前控制其处理的方式。
                其中输入值可能是由序列埠或键盘的终端驱动程序所接收到的字元。
                我们可以利用termios结构的c_iflag的标志来加以控制,其定义的方式皆以OR来加
                以组合。
                      *   
                              * IGNBRK :忽略输入中的 BREAK 状态。 (忽略命 令行中的中
                                断) 
                              * BRKINT :(命令行出 现中断时,可产生一插断)如果设置了
                                IGNBRK,将忽略 BREAK。如果没有设置,但是设置了 BRKINT,
                                那么 BREAK 将使得输入和输出队列被刷新,如果终端是一个前
                                台进程组的控制终端,这个进程组中所有进程将收到 SIGINT 信
                                号。如果既未设置 IGNBRK 也未设置 BRKINT,BREAK 将视为与
                                NUL 字符同义,除非设置了 PARMRK,这种情况下它被视为序列
                                377 � �。  
                              * IGNPAR :忽略桢错误和奇偶校验错。  
                              * PARMRK :如果没有设置 IGNPAR,在有奇偶校验错或桢错误的字
                                符前插入 377 �。如果既没有设置 IGNPAR 也没有设置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值