MFC清空串列埠緩衝區
阿新 • • 發佈:2019-02-07
Win32通訊API除了提供SetupComm()函式實現初始化的緩衝區控制外,還提供了PurgeComm()函式和FlushFileBuffers()函式來進行緩衝區操作。
PurgeComm()函式的宣告如下:
BOOL PurgeComm(
HANDLE hFile, // 返回的控制代碼
DWORD dwFlags // 執行的動作
);
引數hFile指向由CreateFile函式返回的控制代碼,dwFlags表示執行的動作,這個引數可以是表表5中的任一個。引數hFile指向由CreateFile函式返回的控制代碼,可以呼叫GetLastError()函式獲得進一步的錯誤資訊。
表5
值 |
描述 |
PURGE_TXABORT |
即使傳送操作沒有完成,也終止所有的重疊傳送操作,立即返回 |
PURGE_RXABORT |
即使接收操作沒有完成,也終止所有的重疊接收操作,立即返回 |
PURGE_TXCLEAR |
清除傳送緩衝區 |
PURGE_RXCLEAR |
清除接收緩衝區 |
由上面的敘述可以看出,PurgeComm()函式可以在讀寫操作的同時,清空緩衝區。當應用程式在讀寫操作時呼叫PurgeComm()函式,不能保證緩衝區內的所有字元都被髮送。如果要保證緩衝區的所有字元都被髮送,應該呼叫FlushFileBuffer()
FlushFileBuffers()的函式宣告如下:
BOOL FlushFileBuffers(
HANDLE hFile // 函式開啟的控制代碼
);
引數hFile指向由CreateFile函式開啟的控制代碼,如果該函式呼叫成功,則返回值不為零;若函式呼叫失敗,則返回值為零。出錯時可以呼叫GetLastError()函式獲得進一步的出錯資訊。