<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > PC機與嵌入式系統的多線(xiàn)程串行通信實(shí)現

PC機與嵌入式系統的多線(xiàn)程串行通信實(shí)現

作者:劉誠 岳春生 時(shí)間:2008-08-29 來(lái)源:微計算機信息 收藏

摘要   敘述了計算機系統的的實(shí)現。介紹了設計思想的必要性,給出了程序設計流程。
關(guān)鍵詞   ;

本文引用地址:http://dyxdggzs.com/article/87551.htm

  1、引言

  目前,先進(jìn)的計算機以其優(yōu)良的品質(zhì)、高可靠性及模塊化,廣泛地應用于工業(yè)控制、航空航天、醫療、智能儀表、通信、數控、自動(dòng)化生產(chǎn)設備、數據采集等領(lǐng)域。在實(shí)際應用中,有時(shí)需要借助微機強大的數據處理能力和豐富的軟件資源,使得組成的系統功能更為強大。這樣,為了提升系統的整體性能,必須實(shí)現計算機之間的通信。在導航儀生產(chǎn)管理中,由于具有連接簡(jiǎn)單、使用靈活方便、數據傳遞可靠等優(yōu)點(diǎn),采用串行通信方式進(jìn)行數據下載。但由于Windows 95/98對系統底層操作采取了屏蔽的策略,不允許用戶(hù)對硬件I/O口進(jìn)行直接操作,進(jìn)行串行通信只能通過(guò)調用API函數來(lái)完成;同時(shí)Windows 9x通過(guò)消息隊列驅動(dòng)管理程序,DOS中斷服務(wù)例程在其下面也很難實(shí)現,且實(shí)時(shí)性和可靠性都得不到保證;因此通過(guò)多線(xiàn)程編程解決這一問(wèn)題,且能提高數據傳輸的吞吐量和應用程序的可靠性。

  2、系統功能簡(jiǎn)介及基本結構

  本文以導航儀生產(chǎn)管理系統為背景進(jìn)行論述?,F場(chǎng)的嵌入式計算機給上傳所存儲的信息,并從PC機上下載最新的版本信息。而嵌入式計算機發(fā)送回來(lái)的數據可以通過(guò)PC機的人機界面生動(dòng)實(shí)時(shí)地向用戶(hù)顯示。系統基本結構如圖1所示。PC機與嵌入式計算機(從機)之間按照RS-485協(xié)議連接。

  3、多線(xiàn)程串行通信實(shí)現流程

  3.1 用API函數實(shí)現串行通信的基本流程

  如圖2所示,首先CreatFile()函數打開(kāi)通信資源,之后配置通信資源屬性由以下API函數完成:SetupComm()設置串行通信端口的輸入和輸出緩沖區的大??;通過(guò)設備控制塊DCB修改和設置串口工作狀態(tài)的參數,如波特率、數據位、奇偶校驗位等通信參數,SetCommState()將DCB結構中的內容寫(xiě)入串口設置;SetCommTimeouts()設置串口讀寫(xiě)操作的溢出時(shí)間。設置工作完成后串行通信可用ReadFile( )對通信資源進(jìn)行讀操作,WriteFile()進(jìn)行寫(xiě)操作。

  串行通信結束時(shí)調用函數CloseHandle()來(lái)關(guān)閉CreateFile()函數返回的串口句柄。

  3.2  PC機的程序實(shí)現流程

  多線(xiàn)程的串口I/O通信編程中,將對串口的讀、寫(xiě)操作視為同一進(jìn)程的兩個(gè)不同任務(wù),創(chuàng )建讀線(xiàn)程和寫(xiě)線(xiàn)程分別完成對串口的讀、寫(xiě)操作;由于異步串行通信事件的隨機性和實(shí)時(shí)性,要求通信線(xiàn)程優(yōu)先于主線(xiàn)程被處理,所以設置各線(xiàn)程的優(yōu)先級別如下:

  讀線(xiàn)程的優(yōu)先級>寫(xiě)線(xiàn)程的優(yōu)先級>主線(xiàn)程的優(yōu)先級。

  在PC機端,創(chuàng )建輔助線(xiàn)程實(shí)時(shí)監視串口通信狀態(tài),并由串口通信監視線(xiàn)程根據通信狀態(tài)向主線(xiàn)程發(fā)送相應的消息,由主線(xiàn)程分析處理。多線(xiàn)程串行通信法的最大優(yōu)點(diǎn)是程序對接收數據具有自主覺(jué)察能力,一旦輔助的通信監視線(xiàn)程查詢(xún)到數據已經(jīng)發(fā)送到串行口上,輔助線(xiàn)程自動(dòng)接收數據后,向主線(xiàn)程發(fā)送數據接收到的消息,應用程序可根據該消息來(lái)處理通信串口傳送過(guò)來(lái)的數據,并且采用通信監視線(xiàn)程不占用CPU時(shí)間。

  程序實(shí)現建立輔線(xiàn)程:串口讀線(xiàn)程,完成串口通信操作,用來(lái)監視和管理串口通信的輸入。讀線(xiàn)程一直等待,從通信串口讀取數據并傳輸給主線(xiàn)程處理。主線(xiàn)程除完成串口通信資源的打開(kāi)、參數配置以及關(guān)閉的工作外,還要完成讀線(xiàn)程的創(chuàng )建及關(guān)閉、多線(xiàn)程的協(xié)調、數據的中間處理與前端的人機交互等工作。

  圖3為PC機的串口通信流程圖。左邊為主線(xiàn)程,右邊為子線(xiàn)程。實(shí)線(xiàn)框內為用戶(hù)界面的視類(lèi)函數,虛線(xiàn)框內為通信類(lèi)函數。用戶(hù)通過(guò)VC設計的界面上的控件打開(kāi)串口,并且發(fā)送數據。當對串口的參數設置完畢,串口成功打開(kāi)的同時(shí),子線(xiàn)程即接收線(xiàn)程開(kāi)始運行。用戶(hù)發(fā)送數據的同時(shí),接收線(xiàn)程的控制函數也同時(shí)運行,當控制函數接收到讀串口事件時(shí),調用讀串口函數,讀取串口接收到的數據。子線(xiàn)程一直運行,也不斷的讀取接收到的數據,并顯示在用戶(hù)的界面上。當用戶(hù)關(guān)閉串口,主線(xiàn)程要終止,此時(shí)子線(xiàn)程也收到主線(xiàn)程發(fā)送的關(guān)閉串口事件,終止線(xiàn)程,關(guān)閉串口。

  在實(shí)際通信過(guò)程中,由于干擾等原因,數據傳輸可能發(fā)生錯誤,因此還要加上實(shí)時(shí)錯誤處理以保證數據正常傳輸。這里不再贅述。

  3.3  嵌入式從機的程序實(shí)現流程

  在嵌入式從機部分,通信實(shí)現采用的是單線(xiàn)程,初始化設備之后等待通信數據,如果數據到達,則調用接收函數接收PC機數據,并將數據解析,返回結果向PC機發(fā)送數據。如果沒(méi)有數據則繼續等待。程序流程圖如圖4所示

  4、 結束語(yǔ)

  本文分析了多線(xiàn)程技術(shù)在實(shí)現PC機與單片機串口通信程序中的作用。通過(guò)兩個(gè)通信線(xiàn)程并發(fā)執行,加以同步管理,應用程序能夠在發(fā)送數據的同時(shí)接收數據,實(shí)時(shí)響應性強,高效可靠,有效地避免了數據丟失、程序鎖死等問(wèn)題。在實(shí)際應用中結果令人滿(mǎn)意。

  參考文獻:

  [1] Mark Nelson. 串行通信開(kāi)發(fā)指南.瀟湘工作室譯.M. 北京:中國水利水電出版社,2000.
  [2]求是科技 譚思亮等.Visual C++串口通信工程開(kāi)發(fā)實(shí)例導航.M.北京:人民郵電出版社,2001
  [3]李朝青. PC機與單片機數據通信技術(shù).C. 北京:北京航空航天大學(xué)出版社,2001.

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>