Linux串口c_cc[VTIME]和c_cc[VMIN]屬性設置的做用

在串口編程模式下,open未設置O_NONBLOCK或O_NDELAY的狀況下。html

c_cc[VTIME]和c_cc[VMIN]映像read函數的返回。編程

VTIME定義等待的時間,單位是百毫秒(一般是一個8位的unsigned char變量,取值不能大於cc_t)。函數

VMIN定義了要求等待的最小字節數,這個字節數多是0。post

若是VTIME取0,VMIN定義了要求等待讀取的最小字節數。函數read()只有在讀取了VMIN個字節的數據或者收到一個信號的時候才返回。url

若是VMIN取0,VTIME定義了即便沒有數據能夠讀取,read()函數返回前也要等待幾百毫秒的時間量。這時,read()函數不須要像其一般狀況那樣要遇到一個文件結束標誌才返回0。spa

若是VTIME和VMIN都不取0,VTIME定義的是當接收到第一個字節的數據後開始計算等待的時間量。若是當調用read函數時能夠獲得數據,計時器 立刻開始計時。若是當調用read函數時尚未任何數據可讀,則等接收到第一個字節的數據後,計時器開始計時。函數read可能會在讀取到VMIN個字節 的數據後返回,也可能在計時完畢後返回,這主要取決於哪一個條件首先實現。不過函數至少會讀取到一個字節的數據,由於計時器是在讀取到第一個數據時開始計時 的。htm

若是VTIME和VMIN都取0,即便讀取不到任何數據,函數read也會當即返回。同時,返回值0表示read函數不須要等待文件結束標誌就返回了。blog

相關文章
相關標籤/搜索