通信协议相关.md

Catalogue
  1. 1. 通信协议相关

通信协议相关

有关文章

串口相关模式

  • 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的数据结构体

1
2
3
4
5
6
7
8
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控制修改方式,共有三种修改方式,

  1. TCSANOW:立刻对值进行修改
  2. TCSADRAIN:等当前的输出完成后再对值进行修改
  3. TCSAFLUSH:等当前的输出完成之后,再对值进行修改,但丢弃还未从read调用返回的当前的可用的任何输入。

部分函数

1.open

参数解释:

pathname:文件路径名,串口在Linux中被看做是一个文件

oflag:一些文件模式选择,有如下几个参数可以设置