天天看點

linux下序列槽程式設計VTIME和VMIN參數的用法

c_cc[VTIME]和c_cc[VMIN]這兩個參數的作用始終不清楚,今天上網搜了才知道。

VTIME定義要求等待的時間量(取值不能大于cc_t)。

VMIN定義了要求等待的最小位元組數。

options.c_cc[VTIME] = X;   //設定從擷取到1個位元組後開始計時的逾時時間

options.c_cc[VMIN] = Y;     //設定要求等待的最小位元組數

在原始模式下對read()函數的影響:

1、X=0,Y!=0。函數read()隻有在讀取了Y個位元組的資料或者收到一個信号的時候才傳回;

2、X!=0,Y=0。即使沒有資料可以讀取,read()函數等待X時間量後傳回;

3、X!=0,Y!=0。第一個位元組資料到時開始,最先滿足收到Y個位元組或達逾時時間X任意一個條件,read()傳回;

4、X=0,Y=0。即使讀取不到任何資料,函數read也會立即傳回。

示例:

通過序列槽連ID卡讀卡器,要求讀序列槽至少收6個位元組資料立即傳回,可以将序列槽的上述兩個設定項設定如下:

options.c_cc[VTIME]=0;

options.c_cc[VMIN]=6;

繼續閱讀