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...