基于多線程技術(shù)實現(xiàn)多串口的實時通信

基于多線程技術(shù)實現(xiàn)多串口的實時通信

ID:8324533

大小:183.50 KB

頁數(shù):6頁

時間:2018-03-19

基于多線程技術(shù)實現(xiàn)多串口的實時通信_第1頁
基于多線程技術(shù)實現(xiàn)多串口的實時通信_第2頁
基于多線程技術(shù)實現(xiàn)多串口的實時通信_第3頁
基于多線程技術(shù)實現(xiàn)多串口的實時通信_第4頁
基于多線程技術(shù)實現(xiàn)多串口的實時通信_第5頁
資源描述:

《基于多線程技術(shù)實現(xiàn)多串口的實時通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。

1、基于多線程技術(shù)實現(xiàn)多串口的實時通信鄧林濤(江西贛粵高速公路股份有限公司江西南昌330000)摘要:介紹了采用一種通過基于多線程的多串口實時通信方式實現(xiàn)在現(xiàn)代加工制造業(yè)中對多臺數(shù)控設(shè)備進行集中控制的方法。具體介紹了VisualC+中基于多線程的多串口實時通信的實現(xiàn)技術(shù),并給出了核心代碼。基于該方法的解決方案實際應用效果良好。關(guān)鍵詞:信息工程;多線程;多串口;實時通信;通信協(xié)議;數(shù)控設(shè)備0前言隨著電子儀器、測繪技術(shù)、計算機技術(shù)的快速發(fā)展,計算機與電子、測繪儀器的通信問題是經(jīng)常遇到的問題,在現(xiàn)代制造工業(yè)控制中,現(xiàn)有電子、測繪儀器大多都采用串行通信口與計算機進行通信,串口

2、通信是常用的計算機與外部串行設(shè)備之間的數(shù)據(jù)傳輸通道,串口通信以其靈活、實現(xiàn)方便易行、系統(tǒng)費用低、傳輸可靠、信號線數(shù)量少的優(yōu)點已經(jīng)在許多領(lǐng)域得到了廣泛應用。而一臺PC機本身自帶的一兩個串口根本無法滿足現(xiàn)代工業(yè)控制的需要,因此多串口卡就應運而生,使一臺PC機有甚至多達10多個串口與電子儀器進行通信控制,如何使這些各種儀器通過多串口跟PC機進行實時準確無誤的通信,我們在此選擇使用多線程技術(shù),多線程技術(shù)可以使得各端口獨立,準確地實現(xiàn)串行通信,使串行通信具有更廣泛的靈活性與嚴格性,且充分利用CPU時間。在具體的實時監(jiān)控系統(tǒng)中如何協(xié)調(diào)多個線程、線程之間以何種方式實現(xiàn)同步,這是

3、多線程串行通信程序?qū)崿F(xiàn)的關(guān)鍵點。本文探討的就是在Windows9X/NT下利用VC++的API函數(shù)采用多線程技術(shù)對RS-232串口編程實行精準實時控制。1VisualC++中基于多線程的多串口實時通信技術(shù)在現(xiàn)代的各種實時監(jiān)控系統(tǒng)和通信系統(tǒng)中,在Windows9X/NT下利用VC++對RS-232串口編程是常用的手段。Windows9X/NT是搶先式的多任務操作系統(tǒng),程序?qū)PU的占用時間由系統(tǒng)決定。多任務指的是系統(tǒng)可以同時運行多個進程,每個進程又可以同時執(zhí)行多個線程。進程是應用程序的運行實例,擁有自己的地址空間。每個進程擁有一個主線程,同時還可以建立其他的線程。線

4、程是操作系統(tǒng)分配CPU時間的基本實體,每個線程占用的CPU時間由系統(tǒng)分配,系統(tǒng)不停的在線程之間切換。進程中的線程共享進程的虛擬地址空間,可以訪問進程的資源,處于并行執(zhí)行狀態(tài),這就是多線程的基本概念。使用MFC開發(fā)是較普遍的VC++編程方法。在VC++6.0下,MFC應用程序的線程由CWinThread對象表示。VC++把線程分為兩種:用戶界面線程(UserInterfaceThread)和工作者線程(WorkThread)。用戶界面線程能夠提供界面和用戶交互,通常用于處理用戶輸入并相應各種事件和消息;而工作者線程主要用來處理程序的后臺任務。本文監(jiān)視串口事件的線程即

5、為工作線程。1.1多線程下的串行通信的操作方式(1)同步方式同步方式中,讀串口的函數(shù)試圖在串口的接收緩沖區(qū)中讀取規(guī)定數(shù)目的數(shù)據(jù),直到規(guī)定數(shù)目的數(shù)據(jù)全部被讀出或設(shè)定的超時時間已到時才返回。使用同步通信要較好地防止線程阻塞(2)異步方式異步方式中,利用Windows的多線程結(jié)構(gòu),可以讓串口的讀寫操作在后臺進行,而應用程序的其他部分在前臺執(zhí)行。采用異步通信,可以提高系統(tǒng)的整體性能。多線程程序的編寫在端口的配置,連接部分與單線程的相同,在端口配置完畢后,最重要的是根據(jù)實際情況,建立多線程之間的同步對象,如信號燈、臨界區(qū)和事件等,防止多線程同時訪問同一塊內(nèi)存數(shù)據(jù)。CSema

6、phore:信號燈對象,允許一定數(shù)目的線程訪問某個共享資源,常用來控制訪問共享資源的線程數(shù)量?!mutex:互斥量對象,一個時刻至多只允許一個線程訪問某資源,未被占用時處于有信號狀態(tài),可以實現(xiàn)對共享資源的互斥訪問?!Event:事件對象,用于使一個線程通知其他線程某一事件的發(fā)生,所以也可以用來封鎖對某一資源的訪問,直到線程釋放資源使其成為有信號狀態(tài)。適用于某一線程等待某事件發(fā)生才能執(zhí)行的場合?!CriticalSection:臨界區(qū)對象,將一段代碼置入臨界區(qū),只允許最多一個線程進入執(zhí)行這段代碼。一個臨界區(qū)僅在創(chuàng)建它的進程中有效。1.2程序中所使用的主要WIN

7、32API函數(shù)BOOLSetCommState(HANDLEhFile,LPDCBlpDCB);//串口配置函數(shù)BOOLSetupComm(HANDLEhFile,DWORDdwInQueue,DWORDdwOutQueue);//設(shè)置緩沖區(qū)HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTES,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateF

8、ile);

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

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

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