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

正文內(nèi)容

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

2025-01-09 00:58 本頁(yè)面
 

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