freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于串口的文件傳輸系統(tǒng)的設計通信(編輯修改稿)

2025-01-09 00:58 本頁面
 

【文章內(nèi)容簡介】 對RS232串口編程是常用的手段。 Windows 9X/NT 是搶先式的多任務操作系統(tǒng),程序?qū)PU 的占用時間由系統(tǒng)決定。多任務指的是系統(tǒng)可以同時運行多個 進程,每個進程又可以同時執(zhí)行多個線程。進程是應用程序的運行實例,擁有自己的地址空間。每個進程 9 擁有一個主線程,同時還可以建立其他的線程。線程是操作系統(tǒng)分配 CPU 時間的基本實體,每個線程占用的 CPU 時間由系統(tǒng)分配,系統(tǒng)不停的在線程之間切換。進程中的線程共享進程的虛擬地址空間,可以訪問進程的資源,處于并行執(zhí)行狀態(tài),這就是多線程的基本概念。 VC++中對多線程的支持 使用 MFC 開發(fā)是較普遍的 VC++編程方法。在 VC++ 下, MFC 應用程序的線程由 CWinThread 對象表示。 VC++把線程分為兩種:用戶界面線程和工作者線程。用戶界面線程能夠提供界面和用戶交互,通常用于處理用戶輸入并相應各種事件和消息;而工作者線程主要用來處理程序的后臺任務。程序一般不需要直接創(chuàng)建 CWinThread對象,通過調(diào)用 AfxBeginThread()函數(shù)就會自動創(chuàng)建一個 CWinThread 對象,從而開始一個進程。創(chuàng)建上述的兩種線程都利用這個函數(shù)。線程的終止取決于下列事件之一:線程函數(shù)返回;線程調(diào)用 ExitThread()退出;異常情況下用線程的句柄調(diào)用 TerminateThread()退出;線程所屬的進程被終止 [1]。 多線程在串口通信中的應用 ( 1) 串口通信對線程同步的要求 因為同一進程的所有線程共享進程的虛擬地址空間,而在 Windows 9X/NT 系統(tǒng)下線程是匯編級中斷,所以有可能多個線程同時訪問同一個對象。這些對象可能是全局變量, MFC 的對象, MFC 的 API 等。串口通信的幾個特點決定了必須采用措施來同步線程的執(zhí)行。 串口通信中,對于每個串口對象,只有一個緩沖區(qū),發(fā)送和接收都要用到,必須建立起同步機制,使得在一個時候只能進行一種操作,否則通信就會出錯。進行串口通信處 理的不同線程之間需要協(xié)調(diào)運行。如果一個線程必須等待另一個線程結(jié)束才能運行,則應該掛起該線程以減少對 CPU 資源的占用,通過另一進程完成后發(fā)出的信號 (線程間通信 )來激活。 VC++提供了同步對象來協(xié)調(diào)多線程的并行,常用的有以下幾種: 1CSemaphore:信號燈對象,允許一定數(shù)目的線程訪問某個共享資源,常用來控制訪問共享資源的線程數(shù)量。 2Cmutex:互斥量對象,一個時刻至多只允許一個線程訪問某資源,未被占用時處于有信號狀態(tài),可以實現(xiàn)對共享資源的互斥訪問。 3CEvent:事件對象,用于使一個線程 通知其他線程某一事件的發(fā)生,所以也可以用來封鎖對某一資源的訪問,直到線程釋放資源使其成為有信號狀態(tài)。適用于某一線程等待某事件發(fā)生才能執(zhí)行的場合。 4CCriticalSection:臨界區(qū)對象,將一段代碼置入臨界區(qū),只允許最多一個線程進入執(zhí)行這段代碼。一個臨界區(qū)僅在創(chuàng)建它的進程中有效。 10 ( 2) 等待函數(shù) Win32 API 提供了能使線程阻塞其自身執(zhí)行的等待函數(shù),等待其監(jiān)視的對象產(chǎn)生一定的信號才停止阻塞,繼續(xù)線程的執(zhí)行。其意義是通過暫時掛起線程減少對 CPU 資源 的占用。在某些大型監(jiān)控系統(tǒng)中,串口通信只是其中 事務處理的一部分,所以必須考慮程序執(zhí)行效率問題,當串口初始化完畢后,就使其處于等待通信事件的狀態(tài), 減少消耗的 CPU 時間,提高程序運行效率。常用的等待函數(shù)是 WaitForSingleObject()和WaitForMultipleObjects(),前者可監(jiān)測單個同步對象,后者可同時監(jiān)測多個同步對象。 串口通信的重疊 I/O方式 MFC 對于串口作為文件設備處理,用 CreateFile()打開串口,獲得一個串口句柄。打開后 SetCommState()進行端口配置,包括緩沖 區(qū)設置,超時設置和數(shù)據(jù)格 式等。成功后就可以調(diào)用函數(shù) ReadFile()和 WriteFile()進行數(shù)據(jù)的讀寫,用 WaitCommEvent()監(jiān) 視通信事件。 CloseHandle()用于關閉串口 [3]。 在 ReadFile()和 WriteFile()讀寫串口時,可以采取同步執(zhí)行方式,也可以采取重疊I/O 方式。同步執(zhí)行時,函數(shù)直到執(zhí)行完畢才返回,因而同步執(zhí)行的其他線程會被阻塞,效率下降;而在重疊方式下,調(diào)用的讀寫函數(shù)會 立即返回, I/O 操作在后臺進行,這樣線程就可以處理其他事務。這樣,線程可以在同一串口句柄上實現(xiàn)讀寫操作,實現(xiàn) 重 疊 [3]。 使用重疊 I/O 方式時,線程要創(chuàng)建 OVERLAPPED 結(jié)構供讀寫函數(shù)使用,該結(jié)構最重要的成員是 hEvent 事件句柄。它將作為線程的同步對象使用,讀寫函數(shù)完成時 hEvent處于有信號狀態(tài),表示可進行讀寫操作;讀寫函數(shù)未完成時, hEvent 被置為無信號。 基于串口的文件傳輸系統(tǒng)設計的主要內(nèi)容 本次畢業(yè)設計主要研究的內(nèi)容有: 1. 進行文件傳輸技術的分析,包括通信流程、通信方式的確定、數(shù)據(jù)包的格式分析; 2. 通信思路的設計,包括互相拷貝文件功能的描述、通信事件的處理方法和流程、消息響應函數(shù)的設計和流程圖以 及各種操作狀態(tài)的含義定義; 3. 界面設計,包括主界面和對話框設計; 4. 程序設計; 5. 程序調(diào)試和預期效果的檢驗; 6. 程序設計的延伸和可擴展性的分析。 11 論文(設計)的整體結(jié)構 第一章,主要介紹畢業(yè)設計的主要內(nèi)容、選題背景和應用前景; 第二章,主要介紹串口通信程序開發(fā)的基礎知識; 第三章,主要介紹本次畢業(yè)設計的設計方案和相關領域串口通信程序開發(fā)的技巧; 第四章,對串口可能出現(xiàn)的問題提出解決的辦法; 第五章,對本次畢業(yè)設計提出寶貴意見的人表示感謝; 第六章,給出本次畢業(yè)設計的參考文獻,希望通過閱讀能夠全面了解利用 VC++進行程序開發(fā)的原理。 12 第二章 串口通信程序開發(fā)基礎知識 串口通信概述 在工業(yè)控制中 ,串口是常用的計算機與外部串行設備之間的數(shù)據(jù)傳輸通道。由于串行通信結(jié)構簡單、可靠性強、實現(xiàn)及使用成本低、通訊標準統(tǒng)一,因此在測控系統(tǒng)和工程中應用十分廣泛。目前 Windows 在工業(yè)生產(chǎn)監(jiān)控管理系統(tǒng)中已成為主流平臺 ,Windows 環(huán)境下的上、下位機之間的串行通信是設計與開發(fā)監(jiān)控管理系統(tǒng)和集散控制系統(tǒng)的重要組成部分。 Microsoft 公司的 VC++ 是一種高級編程 語言,其基礎類庫 (MFC)封裝了 Win32API中的標準通信函數(shù),可方便地支持串口通信。 介紹串行通信,有必要先介紹一下并行通信。所謂并行通信,是在一些聯(lián)絡信號的控制下,一次將 8位、 16位或 32位數(shù)據(jù)同時傳送的通信方式。在并行通信中,傳輸線數(shù)量沒有限制,除了數(shù)據(jù)線之外還應設置有通信聯(lián)絡控制線。這種通信方式的優(yōu)點是通信速率高,適用于告訴的通信場合,但缺點也很明顯,首先隨著通信聯(lián)絡控制線數(shù)量的增加,通信的成本越來越高;其次隨著通信距離的增加,受到通信聯(lián)絡控制線間及外界的電磁干擾越趨嚴重,通信的質(zhì)量明顯下降 [3]。 為解決這些問題,可以采取串行通信方式。串行通信,只需要一隊傳輸線,數(shù)據(jù)的各位按照時間順序依次傳送,如 8位數(shù)據(jù)分 8次傳送。顯然,串行通信的速度要比并行 通信慢的多,但其優(yōu)點也很明顯,通信成本底,距離遠。 計算機系統(tǒng)的應用和微機網(wǎng)絡日益發(fā)展,通信功能越來越顯的重要。這里所說的通信是指計算機與外界的信息交換。因此,通信既包括計算機與外部設備之間,也包括計算機和計算機之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進行信息傳送,因此,特別適合于遠距離傳輸。 對于那些與計算機相距不遠的人機交換設備和串行存儲的外部設備如終端、打印機、邏輯分析儀、磁盤等,采用串行方式交換數(shù)據(jù)也很普遍。在實時控制和管理方面,采用多臺微機處理機組成分級分布控制系統(tǒng)中,各 CPU 之間的通信一般都是串行方式。所以串行接口是微機應用系統(tǒng)常用的接口。 13 串行通信基礎知識 串行通信的優(yōu)點 串行通信之所以被廣泛采用,其中一個主要原因是可以在現(xiàn)有的電話網(wǎng)絡上進行信息的遠距離傳輸。只要增加 MODEM,邊可以在電話網(wǎng)絡實行遠程通信。一般來說,串行通信具有如下四個優(yōu)點: ( 1)由于在一條傳 輸線路上既有傳輸數(shù)據(jù)信息,又有傳輸控制聯(lián)絡信息,著就需要一系列約定,從而識別一條線上傳誦的信息流中,哪一部分是數(shù)據(jù)信號,哪一部分是聯(lián)絡信號。 ( 2)串行通信的信息格式有異步和同步信息格式,與此對應,有異步串行通信和同步串行通信兩重方式。 ( 3)串行通信由于西西中邏輯定義與 TTL不兼容,故需要邏輯電平轉(zhuǎn)換,以提高信息傳輸?shù)目煽啃浴? ( 4)為了降低通信線路的成本和簡化通信設備,可用現(xiàn)存信道(如電話、電報信道),配以適當?shù)耐ㄐ沤涌?,在任意兩點之間實現(xiàn)串行通信。時間證明,微型計算機通過 MODEM 和電話線進行遠程串行 通信,是當今很手歡迎的廉價的一種通信方式。 串行通信工作方式 在串行通信中,數(shù)據(jù)通常是在兩個站(如微機、終端)之間進行傳輸,按照數(shù)據(jù)流的方向及對線路的是用方式可分為如下幾種基本傳輸方式: (1) 單工傳輸方式 這種方式,在傳輸線路上,數(shù)據(jù)只能按照一個固定的方向,且是交互式的。有的系統(tǒng)是單工傳輸,但可以利用另一線路將接收方的監(jiān)視信號返回到發(fā)送方,通常用于差錯檢測。這種單向連接的用途較窄,僅適用于一些簡單的單向通信或數(shù)據(jù)傳送的場合。 ( 2)半雙工方式 當使用同一根傳輸線既作為輸入又作為輸出時,雖然 數(shù)據(jù)可以在兩個方向上傳輸,但通信雙方不能同時收發(fā)數(shù)據(jù),這種傳輸方式就是半雙工傳輸方式。通信系統(tǒng)每一端的發(fā)送器和接收器,通過收 /發(fā)開關接到通信線,利用收 /發(fā)切換開關進行通信的方向的切換。 ( 3)全雙工傳輸方式 當數(shù)據(jù)的發(fā)送和接受分別由兩根不同的傳輸線傳輸時,通信雙方都能在同一時刻 14 進行發(fā)送和接受操作,即相當于將兩個方向相反的單工傳輸方式組合在一起,這樣的傳輸方式就是全雙工傳輸方式。在全雙工傳輸方式下,通信的每一端都設置了發(fā)送器接收器,因此能控制數(shù)據(jù)信息在兩個方向同時傳送,所以,特別適合于那些不能有時間延遲的交互 式應用系統(tǒng)。串行通信的過程是將通信雙方的數(shù)據(jù)序列變成電信號,在選頂?shù)耐ㄐ啪€路上完成傳遞。 通常,將通信方式分為信號傳輸方式和線路傳輸方式兩部分。 信號傳輸方式是指信號原樣傳輸?shù)幕▊鬏敾蚴抢迷盘栒{(diào)治成高頻載波的載波信號。線路傳輸方式是指通信雙方的設備的線路可選擇單工、半雙工、全雙工和多工方面?zhèn)鬏敗? ( 4)信號傳輸方式 在近距離傳輸時,廣泛使用的是按信號原樣傳輸?shù)幕▊鬏敺绞?。?RS3 RS485等通信方式,這種方式實現(xiàn)簡單,但對通信距離有一定的限制。在遠距離傳輸時,通常需要使用 MODEM。通過 MODEM,可以將原信號調(diào)治為高頻的模擬信號,然后通過電話網(wǎng)絡,進行遠距離傳輸。 ( 5)線路傳輸方式 線路傳輸方式使用復用技術,將一個信道劃分為若干個頻帶或時間片,從而使多路信號同時共享信道,這就是多雙工傳輸方式。使用復用器和集中器可以降低成本,提高通信網(wǎng)的傳輸效率。 串行通信檢錯與糾錯 串行通信的最終目的是將發(fā)送端要發(fā)送的數(shù)據(jù)正確無誤的傳動到接收端。由于突發(fā)性干擾(電器干擾、天氣干擾),從而引起傳輸信號的誤碼是在所難免的,這將直接影響通信系統(tǒng)的可靠性。所以,對通信差錯控制能力是衡量一個通信系統(tǒng)的主 要指標。通常,將如何發(fā)現(xiàn)傳輸中的錯誤叫檢錯。當發(fā)現(xiàn)錯誤后,如何消除和糾正錯誤叫糾錯。在基本通信規(guī)程中一般采用奇偶校驗或方陣檢錯。當發(fā)現(xiàn)錯誤后,如何消除和糾正叫糾錯。在高級通信控制規(guī)程中,一般采用循環(huán)冗余碼 CRC( Cycle Redundancy Code)檢驗,以自動糾錯方式來糾錯。 串行通信的速率與傳輸距離 傳輸速率和距離是衡量串行通信的兩個重要方面,通常串行通信涉及以下兩個方面: 1 波特率 在并行通信中,傳輸速率以每秒傳誦的字節(jié)( B/s)來表示數(shù)據(jù)傳輸速率。此時可 15 以用波特率來表示數(shù)據(jù)傳輸速 率,即 1 波特 =1bit/s。波特率是衡量通信線路基本電信號發(fā)送率的一種量度,它僅僅是電學上的量度單位,而不是信息的量度單位。換言之,撥特率是指發(fā)送到通信線路上的電脈沖速率。 常用的標準波特率是 1 300、 1200、 2400、 4800、 9600、和 19200 等。隨著技術的進步,某些串行通信可以支持更高的波特率,如 38400、 57600 等。 2 發(fā)送接收時鐘 在串行通信中,二進制系列是以數(shù)字信號波形的形式出現(xiàn)的,對這些連續(xù)的數(shù)字波形的死尸發(fā)送和接受是在發(fā)送 /接收時鐘的控制下進行的。 在發(fā)送數(shù)據(jù)時,發(fā)送器在 發(fā)送時鐘的有效沿(下降沿)作用下將移位寄存器的數(shù)據(jù)按位移位串行輸出。在接收數(shù)據(jù)時,接收器在接受時鐘的有效沿(上升沿)作用下對接收數(shù)據(jù)按位采樣,并按位串行移入移位寄存器??梢姡l(fā)送 /接收時鐘是對數(shù)據(jù)信號的每一位驚醒同步控制,而發(fā)送 /接收時鐘的快慢將直接影響通信設備發(fā)送 /接收數(shù)據(jù)的速度。 發(fā)送 /接收時鐘頻率與波特率的關系如下: 發(fā)送 /接收時鐘頻率 =n * 發(fā)送 /接收波特
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1