串列埠通訊模組5 串列埠操作自定義類 2

2021-07-23 09:25:39 字數 2315 閱讀 4351

processerrormessage()函式負責處理並提示錯誤資訊,其實現過程如下:

void cmyserial::processerrormessage(char* errortext)

設計思想:

首先,呼叫formatmessage()函式,將getlasterror()函式返回的錯誤號轉化成字串資訊。然後,將剛剛轉化的字串資訊與錯誤發生的位置,整合成乙個完整的錯誤資訊字串,並儲存到temp指向的空間中。最後,呼叫messagebox()函式,將整合後的資訊以訊息框的形式彈出給使用者。

formatmessage()函式原型如下:

/*

dword formatmessagea(

dword dwflags, //錯誤資訊型別標誌

lpcvoid lpsource, //指定本地資訊定義,其依賴於第乙個引數的設定

dword dwmessageid, //指定被請求訊息標識

dword dwlanguageid, //指定被請求的訊息語言標示

lpstr lpbuffer, //指向乙個格式化的訊息緩衝區

dword nsize, //指定輸出緩衝區的大小

va_list *arguments //指向在格式化訊息中被用來插入數值的乙個32位數值的陣列

);*/

串列埠線程處理函式commthread()實現監控差un扣時間愛你的功能,根據串列埠事件進行相應的實現,實現如下:

uint cmyserial::commtread(lpvoid pparam)

//執行緒的迴圈體

for (;;)

}} else

//獲取串列埠事件並進行相應處理

event = waitformultipleobjects(3, port->m_heventarray, false, infinite);

switch (event)

}return 0;

}

設計思想:

1.獲取儲存串列埠類的指標;並將串列埠線程活動標識設定為真。

2.判斷串列埠是否已經開啟?如果是,那麼清空串列埠緩衝。

3.設計串列埠線程主迴圈體:首先,等待串列埠的非同步通訊事件,如果等待失敗呼叫相應處理函式;否則獲取串列埠中尚未讀取的位元組數。然後,我們需要對獲取的位元組數進行判斷是否為空?如果為空,跳出本次迴圈;最後,等待串列埠的3個事件,並判斷接收到的串列埠事件型別。包括:關閉串列埠事件;處理讀串列埠事件;處理寫串列埠事件。

這裡需要強調waitcommevent()函式,該函式是指為乙個特指的通訊裝置等待乙個事件發生,該函式所監控的事件是與該裝置控制代碼相關聯的一系列事件。

/*

bool winapi waitcommevent(

handle hfile, //指向通訊裝置的乙個控制代碼

lpdword lpevtmask, //乙個指向dword的指標

);*/

這裡採用函式startmonitoring()、函式restartmonitoring()、函式stopmonitoring()分別監控串列埠程序的開始、重啟和掛起。

//啟動串列埠線程

bool cmyserial::startmonitoring()

//重啟串列埠程序

bool cmyserial::restarmonitoring()

//掛起串列埠線程

bool cmyserial::stopmonitoring()

設計思想:

這3個函式實現起來是非常輕鬆的,分別呼叫了afxbginthread()、resumethread()和suspendthread()函式來實現串列埠程序的開啟、重啟以及掛起功能。

關閉串列埠函式直接呼叫setevent()函式就可以實現,具體是設定關閉串列埠事件的狀態為標記。

//串列埠關閉

void cmyserial::closeport()

QT5串列埠通訊

在qt5之前,要實現串列埠通訊,需要借助第三方串列埠封裝 qt5已經自帶了類來完成這項工作。如下 1.在pro檔案中新增 qt serialport 引入標頭檔案 include qtserialport qserialport include qtserialport qserialportinf...

串列埠通訊模組2 串列埠通訊程式設計基礎 開啟 配置

有兩種方式可以操作串列埠 同步操作方式和非同步操作方式 即重疊操作方式 同步操作時,api函式會阻塞直到操作完成以後才能返回 在多執行緒方式中,雖然不會阻塞主線程,但是仍然會阻塞監聽執行緒 而非同步操作方式,api函式會立即返回,操作在後台進行,避免程序阻塞。非同步操作方式還允許讀 寫操作能同時進行...

RS232串列埠通訊模組

應為工作需要自己編寫的rs232通訊模組,該模組已經編寫了蠻久,在實際使用中可能有沒有考慮和不完善的地方。如果使用該模組請保留該注釋,如果被修改或編輯請將修改後的 傳送乙份給我 編寫 戴琪英 e mail qiyingdai 163.com 2000 09 01 unit r232comm inte...