串列埠程式設計-讀寫超時 COMMTIMEOUTS設定
讀寫超時是在 呼叫 ReadFile 和 WriteFile 函式讀寫串列埠的時候系統提供的超時機制
/* Multiplier of characters. */
|
讀超時 有兩隻計算方法
1:(間隔超時)ReadIntervalTimeout 指定了在接收字元間的最大時間,如果超過了這個時間,ReadFile立即返回。
2:(總超時)基於要接收的字元數量
ReadTotalTimeoutMultiplier表示平均讀一個位元組的時間上限
ReadTotalTimeoutConstant表示讀資料總時間常量
讀資料總超時:ReadTotalTimeoutConstant +(ReadTotalTimeoutMultiplier*要讀的位元組數)
讀資料超時,兩種超時同時有效,當出現任何一種超時時,ReadFile都將返回。
寫超時:
WriteTotalTimeoutMultiplier表示平均寫一個位元組的時間上限
WriteTotalTimeoutConstant表示寫資料總超時常量
寫資料總超時 :WriteTotalTimeoutConstatn +(WriteTotalTimeoutMultiplier *要寫的位元組數)
具體超時設定
1: 有讀間隔超時、讀總超時、寫總超時,將COMMTIMEOUTS結構5個成員設定為對應值。
2:沒有讀間隔超時,有讀總超時和寫總超時,將RealIntervalTimeou設定為0,其他引數設定為對應值。
3:不管是否有資料要讀取,ReadFile立即返回,將RealIntervalTimeout設定為MAX_DWORD,
將ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都設定為0
(不立即返回的時候,可以在超時時間內等串列埠中有新的資料?然後讀取,直到超時時間)
4:ReadFile沒有超時設定,直到有適當的字元數返回或者錯誤發生,函式才返回。
將 ReadIntervalTimeout、ReadTotalTimeoutMultiplier、ReadTotalTimeoutConstant都設定為0
5:WriteFile沒有超時設定:將WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant設定為0