1.阻塞与非阻塞
1.1 阻塞的定义
对于read,指当串口输入缓存区没有数据的时候,read函数将会阻塞在这里,直到串口输入缓存区中有数据可读取,read读到了需要的字节数之后,返回值为读到的字节数;
对于write,指当串口输出缓冲区满,或剩下的空间小于将要写入的字节数,则write将阻塞,一直到串口输出缓冲区中剩下的空间大于等于将要写入的字节数,执行写入操作,返回写入的字节数。
1.2 非阻塞的定义
对于read,指当串口输入缓冲区没有数据的时候,read函数立即返回,返回值为-1。
对于write,指当串口输出缓冲区满,或剩下的空间小于将要写入的字节数,则write将进行写操作,写入当前串口输出缓冲区剩下空间允许的字节数,然后返回写入的字节数。
1.3 阻塞与非阻塞模式的切换
在打开串口文件时,打开模式加上O_NDELAY可以以非阻塞方式打开串口;反之,不加上O_NDEAY,默认以阻塞方式打开串口。
打开串口之后,可以通过fcntl()函数进行控制。