用VC_多線程技術實現(xiàn)PC機全雙工串行通訊

用VC_多線程技術實現(xiàn)PC機全雙工串行通訊

ID:38133763

大小:218.43 KB

頁數(shù):4頁

時間:2019-05-31

用VC_多線程技術實現(xiàn)PC機全雙工串行通訊_第1頁
用VC_多線程技術實現(xiàn)PC機全雙工串行通訊_第2頁
用VC_多線程技術實現(xiàn)PC機全雙工串行通訊_第3頁
用VC_多線程技術實現(xiàn)PC機全雙工串行通訊_第4頁
資源描述:

《用VC_多線程技術實現(xiàn)PC機全雙工串行通訊》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、第2卷第1期南京師范大學學報(工程技術版)Vol.2No.12002年JOURNALOFNANJINGNORMALUNIVERSITY(ENGINEERINGANDTECHNOLOGY)2002++用VC多線程技術X實現(xiàn)PC機全雙工串行通訊章玲(南通供電公司,南通,226006)[++摘要]討論了用VC中的多線程技術,及用多線程實現(xiàn)PC機串口全雙工通訊的方法,并進一步探討了全雙工通訊在滑動窗口協(xié)議中的應用1[關鍵詞]多線程,全雙工通訊,滑動窗口[中圖分類號]TP31;[文獻標識碼]B;[文章編號]1672-1292(20

2、02)01-0038-04Win32支持爭先式多任務和多線程編程,因而Windows應用程序的編寫有了很大的變化。相對單++工和半雙工特性而言,全雙工串行通訊的管理要復雜性得多.本文就應用VC的多線程技術實現(xiàn)全雙工串行通訊問題進行探討.1關于線程的三個問題1.1線程的概念“線程”是指程序指令順序的執(zhí)行.Windows98或WindowsNT下程序可以啟動一個或幾個輔助線程,每個線程獨立執(zhí)行程序代碼中的一系列指令.從用戶或應用程序編程人員的角度看,進程中各線程是同時運行的.操作系統(tǒng)在線程與線程之間快速切換實現(xiàn)宏觀視覺的同時

3、.程序在某個時間需要完成多個任務時,將每個任務放在不同的線程中,使程序功能的實現(xiàn)更加有效,還能簡化開發(fā)工作.1.2Windows中的兩種線程Windows提供了兩種線程:輔助線程和用戶界面線程。MicrosoftFoundationClass(MFC)庫對兩種線程都支持.一個用戶界面線程有窗口,所以它有自己的消息循環(huán),使程序能迅速響應命令和其它事件;輔助線程沒有消息窗口,所以它不需要處理消息,而是用于完成費時的工作,例如磁盤的操作和串行口的通訊11.3多線程間的通訊可以在一個用戶界面線程中啟動一個輔助線程.輔助線程一旦啟

4、動,兩個線程就獨立運行.進程中的所有代碼和數(shù)據(jù)空間被進程內的線程所利用,進程內所有的線程可以訪問同一個全局變量.因此,主線程與輔助線程間的通訊,最簡單的方法是利用全局變量.較為復雜的方法是利用“事件”(event).輔助線程與主線程的通訊可以采用消息隊列的方式.前面提到,主用戶界面線程有自己的消息隊列,所以采用從輔助線程向主線程發(fā)送Windows消息的方法,通知主線程一段數(shù)據(jù)已發(fā)送完畢或已收到對方發(fā)來的數(shù)據(jù).發(fā)送消息有兩種方法:SendMessage和PostMessage.SendMessage強迫接收線程立即響應,但

5、是容易引起重入.PostMessage函數(shù)只將消息放在目標窗口消息隊列的隊尾,不會引起重入.所以使用PostMessage函數(shù)給窗口發(fā)送一個用戶自定義消息比較可靠.X收稿日期:2001-10-121作者簡介:章玲,女,1962-,江蘇省南通供電公司蘇源自動化設備有限公司高級工程師,從事電力系統(tǒng)自動化通訊產(chǎn)品的研發(fā)工作1—38—++章玲:用VC多線程技術實現(xiàn)PC機全雙工串行通訊2用多線程實現(xiàn)全雙工通訊的必要性2.1防止用戶界面線程的阻塞一個線程被阻塞,是指該線程被停止執(zhí)行.在主用戶界面線程里,要避免阻塞調用.如果通過串口發(fā)

6、送大量數(shù)據(jù)的程序段被放在主線程里,主線程就不能及時響應鼠標或鍵盤命令而處理消息了,這樣會使程序顯得反應遲緩.2.2使程序簡潔有效在DOS或WIN16方式下,大多采用半雙工通訊.程序員必須在程序中確定應該在什么時候發(fā)送,什么時候接收,以什么樣的頻率監(jiān)測接收緩沖區(qū).現(xiàn)在,有了Windows95搶先式多任務操作系統(tǒng)中,收、發(fā)工作的時間片切換由系統(tǒng)負責,程序員只需把管理收、發(fā)的代碼放在不同的線程中.在程序員看來,兩者是同時進行的,真正的全雙工通訊變得簡單多了.當然,如果計算機有多個CPU,則系統(tǒng)可以直接同時執(zhí)行多個線程.2.3調

7、整輔助線程的優(yōu)先級靈活性在函數(shù)AfxBeginThread(?,intnPriority=THREADPRIORITYNORMAL,?)中,nPriority指定本線程的優(yōu)先級.線程的優(yōu)先級確定操作系統(tǒng)在線程與線程間切換控制時,本線程運行的頻繁程度.如果某線程要迅速地完成任務,應當賦予其相對較高的優(yōu)先級.反之,如果線程完成比較不重要的任務,允許在其它線程不活動期間完成,則可以賦予其較低的優(yōu)先級。程序員可以跟據(jù)需要靈活的調整優(yōu)先級.相比之下,在VB中,對串口的操作都是在后臺進行的,如果想讓操作系統(tǒng)給串口操作更多的時間++片

8、,則不得不在程序中加上無數(shù)個DoEvents().因此,使用VC多線程技術,可以最有效的利用系統(tǒng)現(xiàn)有的資源.3全雙工串行通訊實現(xiàn)方法以下是實現(xiàn)串口全雙工通訊的例程13.1初始化串口++在VC中,對串口操作與對文件操作一樣,所以可以從Cfile派生新類CSerialPort,創(chuàng)建CSerial2Port類的成員函數(shù)Op

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。