一.结构体
1.termios
struct termios {
tcflag_t c_iflag; /* 输入模式标志 */
tcflag_t c_oflag; /* 输出模式标志 */
tcflag_t c_cflag; /* 控制模式标志 */
tcflag_t c_lflag; /* 本地模式标志 */
cc_t c_line; /* 线路规程 */
cc_t c_cc[NCCS]; /* 控制字符 */
speed_t c_ispeed; /* 输入速率 */
speed_t c_ospeed; /* 输出速率 */
};
二.定义
1.类型定义
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
2.c_cc
#define VINTR 0 //中断 Ctrl-C
#define VQUIT 1 //退出 Ctrl-Z
#define VERASE 2 //擦除 空格BS
#define VKILL 3 //删行 Ctrl-U
#define VEOF 4 //文件结尾 Ctrl-D
#define VTIME 5 //等待时间
#define VMIN 6 //读取的最小字符数
#define VSWTC 7 //
#define VSTART 8 //软件流开始
#define VSTOP 9 //软件流停止
#define VSUSP 10 //
#define VEOL 11 //行结尾 回车CR
#define VREPRINT 12 //
#define VDISCARD 13 //
#define VWERASE 14 //
#define VLNEXT 15 //
#define VEOL2 16 //第二行结尾 进行LF
3.c_iflag
#define IGNBRK 0000001 //忽略任何中断条件
#define BRKINT 0000002 //传送SIGINT,当检测到中断
#define IGNPAR 0000004 //忽略校验错误
#define PARMRK 0000010 //标记校验错误
#define INPCK 0000020 //校验有效
#define ISTRIP 0000040 //剥离校验位
#define INLCR 0000100 //映射NL到CR
#define IGNCR 0000200 //忽略CR
#define ICRNL 0000400 //映射CR到NL
#define IUCLC 0001000 //映射大写到小写
#define IXON 0002000 //软件流控制输出作用
#define IXANY 0004000 //允许任何字符再次启动流
#define IXOFF 0010000 //软件流控制输入作用
#define IMAXBEL 0020000 //在输入线上回显BEL过长
#define IUTF8 0040000
4.c_oflag
#define OPOST 0000001 //输出后处理(不设置=行式输出)
#define OLCUC 0000002 //映射小写到大写
#define ONLCR 0000004 //映射NL到CR-NL
#define OCRNL 0000010 //映射CR到NL
#define ONOCR 0000020 //
#define ONLRET 0000040 //NL实现CR功能
#define OFILL 0000100 //对于延时用填充字符
#define OFDEL 0000200 //填充字符DEL
#define NLDLY 0000400 //在行之间,需要掩蔽延时
#define NL0 0000000 //NL没有延时
#define NL1 0000400 //在换行后,新的输出前延时100ms
#define CRDLY 0003000 //回车到左边,需要掩蔽的延时
#define CR0 0000000 //CR没有延时
#define CR1 0001000 //CR后的延时,依赖于当前的列位置
#define CR2 0002000 //CR后延时100ms
#define CR3 0003000 //CR后延时150ms
#define TABDLY 0014000 //TAB后需要延时
#define TAB0 0000000 //TAB后没有延时
#define TAB1 0004000 //TAB后的延时根据当前的列位置
#define TAB2 0010000 //TAB后延时100ms
#define TAB3 0014000 //TAB扩展为空格
#define XTABS 0014000 //
#define BSDLY 0020000 //BS后需要延时掩蔽
#define BS0 0000000 //BS后无延时
#define BS1 0020000 //BS后延时50ms
#define VTDLY 0040000 //VT后需要延时掩蔽
#define VT0 0000000 //VT后无延时
#define VT1 0040000 //VT后延时2秒
#define FFDLY 0100000 //FF后需要延时掩蔽
#define FF0 0000000 //FF后无延时
#define FF1 0100000 //FF后延时2秒
5.c_cflag
#define CBAUD 0010017 //波特率掩码
#define B0 0000000 //挂起
#define B50 0000001 //50 b/s
#define B75 0000002 //75 b/s
#define B110 0000003 //110 b/s
#define B134 0000004 //134.5 b/s
#define B150 0000005 //150 b/s
#define B200 0000006 //200 b/s
#define B300 0000007 //300 b/s
#define B600 0000010 //600 b/s
#define B1200 0000011 //1200 b/s
#define B1800 0000012 //1800 b/s
#define B2400 0000013 //2400 b/s
#define B4800 0000014 //4800 b/s
#define B9600 0000015 //9600 b/s
#define B19200 0000016 //19200 b/s
#define B38400 0000017 //38400 b/s
#define EXTA B19200 //外部时钟A
#define EXTB B38400 //外部时钟B
#define CSIZE 0000060 //位数据位掩码
#define CS5 0000000 //5位数据位
#define CS6 0000020 //6位数据位
#define CS7 0000040 //7位数据位
#define CS8 0000060 //8位数据位
#define CSTOPB 0000100 //2位停止位
#define CREAD 0000200 //接收有效
#define PARENB 0000400 //校验位有效
#define PARODD 0001000 //奇偶校验
#define HUPCL 0002000 //最后关闭后,挂起
#define CLOCAL 0004000 //本地线-不 改变端口的"拥有者"
#define CBAUDEX 0010000 //
#define BOTHER 0010000 //
#define B57600 0010001 //57600 b/s
#define B115200 0010002 //115200 b/s
#define B230400 0010003 //230400 b/s
#define B460800 0010004 //460800 b/s
#define B500000 0010005 //500000 b/s
#define B576000 0010006 //576000 b/s
#define B921600 0010007 //921600 b/s
#define B1000000 0010010 //1000000 b/s
#define B1152000 0010011 //1152000 b/s
#def

本文详细介绍了Linux下的串口编程,包括结构体termios的解析,类型定义如c_cc、c_iflag等字段的说明,以及API函数的使用,如串口的打开、读写、关闭和控制。同时,提到了串口控制命令和示例代码,帮助理解如何在Linux环境中进行串口通信。

949

被折叠的 条评论
为什么被折叠?



