title: 通信协议相关.md
toc: true
date: 2021-12-22 09:25:00
通信协议相关
有关文章
串口相关模式
- O_RDONLY 只读模式
- O_WRONLY 只写模式
- O_RDWR 读写模式
- O_APPEND 每次写操作都写入文件的末尾
- O_CREAT 如果指定文件不存在,则创建这个文件
- O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
- O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
- O_NOCTTY 如果路径名指向终端设备,不要把原有设备用作控制终端。(对于串口的打开操作,必须使用O_NOCTTY参数,它表示打开的是一个终端设备,程序不会成为该端口的控制终端。如果不使用此标志,任务的一个输入(比如键盘终止信号等)都会影响进程。)
- O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)
- O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。
- O_RSYNC读(read)等待所有写入同一区域的写操作完成后再进行
- O_SYNC等待物理 I/O 结束后再 write,包括更新文件属性的 I/O
- O_NDELAY表示不关心DCD信号所处的状态(端口的另一端是否激活或者停止)
termios的数据结构
最小的termios的数据结构体
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc[NCCS];
};
模式:
- c_iflag:输入模式
- c_oflag:输出模式
- c_cflag:控制模式
- c_lflag:本地模式
- c_cc[NCCS]:特殊控制模式
有关文章: https://blog.csdn.net/querdaizhi/article/details/7436722
参数actions控制修改方式,共有三种修改方式,
- TCSANOW:立刻对值进行修改
- TCSADRAIN:等当前的输出完成后再对值进行修改
- TCSAFLUSH:等当前的输出完成之后,再对值进行修改,但丢弃还未从read调用返回的当前的可用的任何输入。
部分函数
1.open
参数解释:
pathname:文件路径名,串口在Linux中被看做是一个文件
oflag:一些文件模式选择,有如下几个参数可以设置