1. 程式人生 > >MFC清空串列埠緩衝區

MFC清空串列埠緩衝區

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()函式獲得進一步的出錯資訊。