已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)踐教學(xué)蘭州理工大學(xué)計算機(jī)與通信學(xué)院2012年秋季學(xué)期通信系統(tǒng)綜合訓(xùn)練題目串行異步通信程序設(shè)計_專業(yè)班級09級通信一班_姓名張明哲_學(xué)號_09250104_指導(dǎo)教師王惠琴_成績_摘要串口是常用的計算機(jī)與外部串行設(shè)備之間的數(shù)據(jù)傳輸通道,串行接口SERIALINTERFACE是指數(shù)據(jù)一位一位地順序傳送,并可以利用電話線傳輸,從而大大降低了成本,但是傳送速度慢。在VC60中利用第三方軟件實(shí)現(xiàn)串口通信時實(shí)時性較差,系統(tǒng)資源利用率不足,為了提高串口通信的利用率,在WINDOWS環(huán)境下實(shí)現(xiàn)通信的方法主要有利用MSCOMM控件和直接編程。串行異步通信即RS232通信,是主機(jī)與外部硬件設(shè)備的常用通訊方式??梢噪p向傳輸。如衛(wèi)星信號接收版收到的數(shù)據(jù)傳導(dǎo)到計算機(jī)處理,主要使用串行異步通信處理。異步通信中,在異步通行中有兩個比較重要的指標(biāo)字符幀格式和波特率。數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設(shè)備逐幀接收。發(fā)送端和接收端可以由各自的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨(dú)立,互不同步。關(guān)鍵詞串行接口;MSCOMM控件;VC;目錄前言4第一章串行通信原理511串口通信的基本概念512串行通信協(xié)議513串行通信的工作模式614基本數(shù)據(jù)7第二章串口通信分析821功能描述822VC6軟件簡介823串口通信協(xié)議設(shè)計9第三章系統(tǒng)設(shè)計與調(diào)試1231VC的MICROSOFTCOMMUNICATIONSCONTROL控件1232使用MSCOMM控件編程過程1233添加消息處理函數(shù)16第四章串口通信系統(tǒng)調(diào)試1841計算機(jī)串口設(shè)置1842虛擬串口1843設(shè)置串口大師1944用串口大師測試MSCOMMTEST程序19總結(jié)22心得體會22前言在通信領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式并行通信和串行通信。隨著計算機(jī)網(wǎng)絡(luò)化和微機(jī)分級分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來越重要。通信是指計算機(jī)與外界的信息傳輸,既包括計算機(jī)與計算機(jī)之間的傳輸,也包括計算機(jī)與外部設(shè)備,如終端、打印機(jī)和磁盤等設(shè)備之間的傳輸。隨著通信技術(shù)和計算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展、INTERNET網(wǎng)的普及,計算機(jī)遠(yuǎn)程通信已滲透到各個領(lǐng)域,而遠(yuǎn)程通信絕大多數(shù)采用串行通信的方式,所以研究串行通信是必不可少的過程,串行通信是指使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個固定的時間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息。第一章串行通信原理11串口通信的基本概念串行通信是指使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個固定的時間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別使用于計算機(jī)與計算機(jī)、計算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。以每次一個二進(jìn)制的0、1為最小單位逐位進(jìn)行傳輸,串行數(shù)據(jù)傳送的特點(diǎn)是第一串行傳送在一根傳輸線上既傳送數(shù)據(jù)信息又傳送聯(lián)絡(luò)控制信號第二有固定的數(shù)據(jù)格式,分異步與同步數(shù)據(jù)格式第三串行通信中對信號的邏輯定義與TTL不兼容,故需要進(jìn)行邏輯關(guān)系與邏輯電平轉(zhuǎn)換第四串行傳送信息的速率需要控制,要求雙方設(shè)定通信傳輸?shù)牟ㄌ芈?2串行通信協(xié)議串行通信協(xié)議分同步協(xié)議和異步協(xié)議。(1)異步協(xié)議起止式異步協(xié)議的特點(diǎn)是一個字符一個字符傳輸,并且傳送一個字符總是以起始位開始,以停止位結(jié)束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平,邏輯值0),字符本身有57位數(shù)據(jù)位組成,接著字符后面是一位校驗(yàn)位(也可以沒有校驗(yàn)位),最后是一位,或意味半,或二位停止位,停止位后面是不定長度的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值),這樣就保證起始位開始處一定有一個下跳沿。異步通信是按字符傳輸?shù)模總鬏斠粋€字符,就用起始位來通知收方,以此來重新核對收發(fā)雙方同步。若接收設(shè)備和發(fā)送設(shè)備兩者的時鐘頻率略有偏差,這也不會因偏差的累積而導(dǎo)致錯位,加之字符之間的空閑位也為這種偏差提供一種緩沖,所以異步串行通信的可靠性高。但由于要在每個字符的前后加上起始位和停止位這樣一些附加位,使得傳輸效率變低了,只有約80。因此,起止協(xié)議一般用在數(shù)據(jù)速率較慢的場合(小于192KBIT/S)。在高速傳送時,一般要采用同步協(xié)議。(2)同步協(xié)議特點(diǎn)與格式這種協(xié)議的特點(diǎn)是一次傳送由若干個字符組成的數(shù)據(jù)塊,而不是只傳送一個字符,并規(guī)定了10個字符作為這個數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個傳輸過程的控制信息,它們也叫做通信控制字。由于被傳送的數(shù)據(jù)塊是由字符組成,故被稱作面向字符的協(xié)議。數(shù)據(jù)透明的實(shí)現(xiàn)面向字符的同步協(xié)議,不象異步起止協(xié)議那樣,需要在每個字符前后附加起始和停止位,因此,傳輸效率提高了。同時,由于采用了一些傳輸控制字,故增強(qiáng)了通信控制能力和校驗(yàn)功能。協(xié)議應(yīng)具有將特定字符作為普通數(shù)據(jù)處理的能力,這種能力叫做“數(shù)據(jù)透明”。為此,協(xié)議中設(shè)置了轉(zhuǎn)移字符DLEDATALINKESCAPE。當(dāng)把一個特定字符看成數(shù)據(jù)時,在它前面要加一個DLE,這樣接收器收到一個DLE就可預(yù)知下一個字符是數(shù)據(jù)字符,而不會把它當(dāng)作控制字符來處理了。DLE本身也是特定字符,當(dāng)它出現(xiàn)在數(shù)據(jù)塊中時,也要在它前面加上另一個DLE。這種方法叫字符填充。字符填充實(shí)現(xiàn)起來相當(dāng)麻煩,且依賴于字符的編碼。正是由于以上的缺點(diǎn),故又產(chǎn)生了新的面向比特的同步協(xié)議。(3)面向比特的同步協(xié)議特點(diǎn)與格式特點(diǎn)是所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來標(biāo)志幀的開始和結(jié)束,故稱“面向比特”的協(xié)議。幀信息的分段SDLC/HDLC的一幀信息包括以下幾個場FILED),所有場都是從有效位開始傳送。13串行通信的工作模式通過單線傳輸信息是串行數(shù)據(jù)通信的基礎(chǔ)。數(shù)據(jù)通常是在兩個站(點(diǎn)對點(diǎn))之間進(jìn)行傳送,按照數(shù)據(jù)流的方向可分成3種傳送模式單工、半雙工和全雙工。(1)單工通信單工形式的數(shù)據(jù)傳送是單向的。通信雙方中,一方固定為發(fā)送端,另一方則固定為接收端。信息只能沿一個方向傳送,使用一根傳輸線,如圖2所示。單工形式一般用在只向一個方向傳送數(shù)據(jù)的場合。例如,計算機(jī)與打印機(jī)之間的通信是單工形式,因?yàn)橹挥杏嬎銠C(jī)向打印機(jī)傳送數(shù)據(jù),而沒有相反的數(shù)據(jù)傳送。還有在某些通信信道中,如單工無線發(fā)送等。(2)半雙工通信即HALFDUPLEXCOMMUNICATION。這種通信方式可以實(shí)現(xiàn)雙向的通信,但不能在兩個方向上同時進(jìn)行,必須輪流交替地進(jìn)行。也就是說,通信信道的每一段都可以是發(fā)送端,也可以是接收端。但同一時刻里,信息只能有一個傳輸方向。因此半雙工形式既可以使用一條數(shù)據(jù)線,也可以使用兩條數(shù)據(jù)線。(3)全雙工通信全雙工數(shù)據(jù)通信分別由兩根可以在兩個不同的站點(diǎn)同時發(fā)送和接收的傳輸線進(jìn)行傳送,通信雙方都能在同一時刻進(jìn)行發(fā)送和接收操作,在全雙工方式中,每一端都有發(fā)送器和接收器,有兩條傳送線,可在交互式應(yīng)用和遠(yuǎn)程監(jiān)控系統(tǒng)中使用,信息傳輸效率較高。14基本數(shù)據(jù)波特率實(shí)際上就是傳輸速度,它表示每秒鐘傳送的BIT的個數(shù)。當(dāng)我們提到時鐘周期時,我們就是指波特率。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。數(shù)據(jù)位是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計算機(jī)發(fā)送一個信息包,實(shí)際的數(shù)據(jù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。停止位用于表示單個包的最后一位。典型的值為1,15和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。奇偶校驗(yàn)位在串口通信中一種簡單的檢錯方式。有四種檢錯方式偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。第二章串口通信分析21功能描述本設(shè)計通過串口在兩臺計算機(jī)之間建立連接,按照自定義串口通信協(xié)議進(jìn)行信息交換,通過串口實(shí)現(xiàn)聊天、文件傳輸?shù)墓δ堋?2VC6軟件簡介VISUALC60,簡稱VC或者VC60,是微軟推出的一款C編譯器,將“高級語言”翻譯為“機(jī)器語言(低級語言)”的程序。VISUALC是一個功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年MICROSOFT公司推出VISUALC10后,隨著其新版本的不斷問世,VISUALC已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了VISUALCNETVISUALC70,但它的應(yīng)用有很大的局限性,只適用于WINDOWS2000、WINDOWSXP和WINDOWSNT40。所以實(shí)際中,更多的是以VISUALC60為平臺。VISUALC60由MICROSOFT開發(fā),它不僅是一個C編譯器,而且是一個基于WINDOWS操作系統(tǒng)的可視化集成開發(fā)環(huán)境(INTEGRATEDDEVELOPMENTENVIRONMENT,IDE)。VISUALC60由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)PPWIZARD、類向?qū)LASSWIZARD等開發(fā)工具。這些組件通過一個名為DEVELOPERSTUDIO的組件集成為和諧的開發(fā)環(huán)境。MICROSOFT的主力軟件產(chǎn)品。VISUALC是一個功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年MICROSOFT公司推出VISUALC10后,隨著其新版本的不斷問世,VISUALC已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了VISUALCNETVISUALC70,但它的應(yīng)用的很大的局限性,只適用于WINDOWS2000,WINDOWSXP和WINDOWSNT40。所以實(shí)際中,更多的是以VISUALC60為平臺。VISUALC60以擁有“語法高亮”,自動編譯功能以及高級除錯功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件STDAFXH、最小重建功能及累加連結(jié)LINK著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時間花費(fèi),在大型軟件計劃上尤其顯著。由于C是由C語言發(fā)展起來的,也支持C語言的編譯。60版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對于模版的支持比較差?,F(xiàn)在最新補(bǔ)丁為SP6,推薦安裝,否則易出現(xiàn)編譯時假死狀態(tài)。僅支持WINDOWS操作系統(tǒng)。目前發(fā)現(xiàn)與WINDOWS7兼容性不好,安裝成功后可能會出現(xiàn)無法打開CPP文件的現(xiàn)象。23串口通信協(xié)議設(shè)計串口通信協(xié)議設(shè)計思想基于幀傳輸方式,即在向串口發(fā)送數(shù)據(jù)時是一幀一幀地發(fā)送。對于上層應(yīng)用來說,應(yīng)用程序所發(fā)送的和所接收的都是流式數(shù)據(jù),即如果應(yīng)用程序需要進(jìn)行上層的協(xié)議解釋的說,它將面對這些流數(shù)據(jù)的重新拼裝。為保證可靠的傳輸,在傳輸開始前,通過握手建立連接,在每一幀的傳輸中,采用發(fā)送/應(yīng)答/重連/失敗方式(1)數(shù)據(jù)幀所謂數(shù)據(jù)幀,就是數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元,它包括三部分幀頭,數(shù)據(jù)部分,幀尾。其中,幀頭和幀尾包含一些必要得控制信息,比如同步信息、地址信息、差錯控制信息等;數(shù)據(jù)部分則包含網(wǎng)絡(luò)層傳下來的數(shù)據(jù),比如IP數(shù)據(jù)包。在發(fā)送端,數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層傳下來得數(shù)據(jù)封裝成幀,然后發(fā)送到鏈路上去;在接收端,數(shù)據(jù)鏈路層把收到的幀中的數(shù)據(jù)取出并交給網(wǎng)絡(luò)層。不同的數(shù)據(jù)鏈路層協(xié)議對應(yīng)著不同的幀,所以,幀有多種,比如PPP幀、MAC幀等,其具體格式也不盡相同。(2)控制幀控制幀又叫S幀,用于差錯控制和流量控制。在沒有發(fā)生傳輸錯誤的情況下,一次傳輸只會出現(xiàn)兩次控制幀,第一次在傳輸開始時(計為控制首幀),第二次在傳輸結(jié)束時。(3)短語幀短語幀相對簡單,幀中負(fù)載均為文本數(shù)據(jù)。發(fā)送與接收該幀不需建立連接也沒有錯誤控制,只是在幀頭和幀尾插入了同步信號。0X03文本數(shù)據(jù)0X032控制信號為提高通信效率,串口通信協(xié)議使用控制信號進(jìn)行通信同步、糾錯等各種控制任務(wù)。下面是串口通信協(xié)議定義的6種控制信號。CONSTBYTESYN10X1/請求CONSTBYTEACK10X2/響應(yīng)CONSTBYTERESEND10X4;/重發(fā)CONSTBYTEBUSY10X7;/忙CONSTBYTEBYE36,0,6;/斷開連接CONSTBYTESTR10X3;/短信息同步信號3數(shù)據(jù)分幀及數(shù)據(jù)重組應(yīng)用程序送過來的數(shù)據(jù)作為一個流按串口通信協(xié)議進(jìn)行分幀,切割后為每個幀加上幀頭和校驗(yàn)和,放入串口通信協(xié)議內(nèi)部緩沖區(qū)內(nèi)準(zhǔn)備發(fā)送;在接收端,分幀的數(shù)據(jù)去掉幀頭重新歸到接收緩沖區(qū)流,由應(yīng)用程序接收。4傳輸流程在發(fā)送數(shù)據(jù)前,串口通信協(xié)議發(fā)送方將應(yīng)用程序希望發(fā)送的數(shù)據(jù)進(jìn)行分幀,然后按下面的步驟進(jìn)行通信。(1)握手A由發(fā)送端發(fā)SYN信號,等待反饋。B接收端收到SYN信號后發(fā)回ACK信號。C發(fā)送端收到ACK信號后,由發(fā)送端發(fā)出控制首幀。D接收端收到控制首幀后,CHECKSUM錯誤則發(fā)RESEND信號,然后重復(fù)步驟CD。如果正確,發(fā)ACK信號。E發(fā)送端收到ACK信號后,轉(zhuǎn)到(2)數(shù)據(jù)傳輸?shù)牟襟EA。(2)數(shù)據(jù)傳輸A由發(fā)送端發(fā)送第I幀的幀頭,等待反饋;若發(fā)送方發(fā)現(xiàn)該幀是ABORT幀,則轉(zhuǎn)到(3)斷開連接的步驟A。B接收端收到幀頭后,幀長度校驗(yàn)和錯誤則發(fā)RESEND信號,然后重復(fù)步驟AB。如果正確,發(fā)ACK信號。C若發(fā)送端收到ACK信號,則發(fā)送幀中數(shù)據(jù)和校驗(yàn)和。D接收端收到數(shù)據(jù)后,負(fù)載數(shù)據(jù)校驗(yàn)和錯誤則發(fā)RESEND信號,然后重復(fù)步驟CD。如果正確,發(fā)ACK信號。E若發(fā)送端收到ACK信號,則該幀數(shù)據(jù)發(fā)送成功。發(fā)送端發(fā)送SYN信號,開始下一幀的握手過程。F若接收端收到SYN信號,則發(fā)送ACK信號進(jìn)行確認(rèn)。G若發(fā)送端接收到ACK信號,則重復(fù)AE步驟進(jìn)行下一幀的傳輸。(3)斷開連接A發(fā)送方發(fā)送ABORT控制幀,準(zhǔn)備結(jié)束此次通信。B若接收端收到ABORT信號,則發(fā)送ACK信號,準(zhǔn)備結(jié)束此次通信。C若發(fā)送端收到ACK信號,則發(fā)送BYE控制信號。D若接收方收到BYE信號,則拆除此次連接,同時發(fā)送ACK信號。拆除連接結(jié)束第三章系統(tǒng)設(shè)計與調(diào)試31VC的MICROSOFTCOMMUNICATIONSCONTROL控件MICROSOFT公司在WINDOWS中提供了一個串口通訊控件,用它,我們可以很簡單的利用串口進(jìn)行通訊。在使用它之前,應(yīng)將控件加在應(yīng)用程序的對話框上。然后再用CLASSWIZARD生成相應(yīng)的對象。現(xiàn)在我們可以使用它了。該控件有很多自己的屬性,可以通過它的屬性窗口來設(shè)置,也可以用程序設(shè)置。用程序設(shè)置,更靈活。以下介紹設(shè)置中遇到的幾個相關(guān)函數(shù)。SETCOMMPORT指定使用的串口。GETCOMMPORT得到當(dāng)前使用的串口。SETSETTINGS指定串口的參數(shù)。一般設(shè)為默認(rèn)參數(shù)“9600,N,8,1“。這樣方便與其他串口進(jìn)行通訊。GETSETTINGS取得串口參數(shù)。SETPORTOPEN打開或關(guān)閉串口,當(dāng)一個程序打開串口時,另外的程序?qū)o法使用該串口。GETPORTOPEN取得串口狀態(tài)。GETINBUFFERCOUNT輸入緩沖區(qū)中接受到的字符數(shù)。SETINPUTLEN一次讀取輸入緩沖區(qū)的字符數(shù)。設(shè)置為0時,程序?qū)⒆x取緩沖區(qū)的全部字符。GETINPUT讀取輸入緩沖區(qū)。GETOUTBUFFERCOUNT輸出緩沖區(qū)中待發(fā)送的字符數(shù)。SETOUTPUT寫入輸出緩沖區(qū)。32使用MSCOMM控件編程過程321建立工程打開VC60建立基于對話框的MFC應(yīng)用程序MYTEST,如下圖圖321圖322圖323圖324322插入MSCOMM控件工程增加到工程COMPONENTSANDCONTROLS雙擊REGISTEREDACTIVEXCONTROLS選擇MICROSOFTCOMMUNICATIONSCONTROL,VERSION60INSERT,按默認(rèn)值添加,多了個電話圖標(biāo),這是增加后串口通信控件。如圖326圖328圖416圖326圖327圖328323布局刪除確認(rèn)、取消和提示框,添加“電話”、靜態(tài)文本、按鈕、編輯框,拖動添加的控件,根據(jù)喜好布局。圖329324初始化串口設(shè)置MSCOMM控件的屬性查看建立類向?qū)FCCLASSWIZARDMEMBERVIARIABLE,選擇CLASSNAME為CMYTESTDLG的類,CONTROLID為MSCOMM1,雙擊它,為它添加控制變量M_CTRLCOMM類似的,選擇其它項(xiàng)修改,改后如圖3210圖3210對CMYTESTDLGONINITDIALOG函數(shù)中寫入對串口的初始化語句,串口初始化語句由IDC_MSCOMM1的CMSCOMM控制變量M_CTRLCOMM來設(shè)置串口控件屬性。325添加消息處理函數(shù)查看建立類向?qū)FCCLASSWIZARDMESSAGEMAPS,在CLASSNAME中選擇類CMYTESTDLG,再在OBJECTIDS中選擇IDC_MSCOMM1,然后在MESSAGE中雙擊消息ONCOM,在彈出的對話框中將函數(shù)名改為ONCOMM好記,單擊“OK”,就加入了串口事件的消息處理函數(shù),如圖3211圖3211416發(fā)送數(shù)據(jù)先為發(fā)送按添加一個單擊消息,即BN_CLICKED處理函數(shù),打開CLASSWIZARDMESSAGEMAPS,選擇類CMYTESTDLG,選中IDC_BUTTON_MANUALSEND,雙擊BN_CLICKED添加ONBUTTONMANUALSEND()函數(shù),如圖3212圖3212第四章串口通信系統(tǒng)調(diào)試41計算機(jī)串口設(shè)置進(jìn)入WINDOWS中“我的電腦”系統(tǒng)屬性,在“設(shè)備管理器”列表中有端口COM和LPT設(shè)備信息,選中通信端口COM1,查看其屬性,在COM1端口屬性的端口設(shè)置選項(xiàng)中,將其波特率(即每秒位數(shù))設(shè)為9600,停止位設(shè)為1如圖411412所示,并將COM1改為COM30,釋放COM1已被所用。圖41142虛擬串口有時,也會有這種情況,我們使用的計算機(jī)上一個串口也沒有,或者串口被其他設(shè)備占用。由于串口具有獨(dú)占性,如果被其他設(shè)備占用,那么就不能由我們編寫的程序來控制。但這時我們身邊沒有或不方便使用其他計算機(jī),那么使用第三方軟件提供的虛擬串口可以很好地解決這個問題。虛擬串口本身是不存在的,而是由軟件模擬出來的,不能像真實(shí)的物理串口一樣實(shí)現(xiàn)與其他計算機(jī)或設(shè)備上的串口直接通信,如下圖所示圖4243設(shè)置串口大師打開“串口大師”軟件,設(shè)置串口號為COM2、波特率9600、校驗(yàn)位NO、數(shù)據(jù)位8、停止位1等參數(shù)(注意設(shè)置的參數(shù)必須與儀器設(shè)置的一致),打開串口,如下圖所示圖4344用串口大師測試MSCOMMTEST程序運(yùn)行MSCOMMTEST程序,在發(fā)送框內(nèi)輸入“你好”再點(diǎn)擊“發(fā)送”,觀察串口大師軟件的接收框,發(fā)現(xiàn)可以準(zhǔn)確無亂碼地接收到;在串口大師輸入框內(nèi)輸入“你好我叫張三”點(diǎn)擊“發(fā)送”,觀察到MSCOMMTEST程序接收框也可以準(zhǔn)確地接收到信息,如下圖所示圖441圖442圖443圖444總結(jié)通過系統(tǒng)測試,本系統(tǒng)成功地實(shí)現(xiàn)了自動發(fā)送數(shù)據(jù)、數(shù)據(jù)接收以及數(shù)據(jù)的自動清除。,但是本程序也存在一些不足,如十六進(jìn)制發(fā)送時,只要其中有一個非十六進(jìn)制數(shù),則不能把數(shù)據(jù)發(fā)送出去。還有在實(shí)驗(yàn)過程中需要注意在添加控件的時候要及時編輯它的名稱和控制變量,并在程序的調(diào)用中正確使用,由于系統(tǒng)受到干擾,往往傳送過程中出現(xiàn)顯示數(shù)據(jù)的延遲。心得體會本次課程設(shè)計過程中,我原來接觸的語言是C和JAVA,從來沒有接觸過C,感覺無從下手,而且熟悉VISUALC環(huán)境也需要一段時間。萬事開頭難,剛剛開始的兩天思路很亂。后來明白系統(tǒng)是用MSCOMM控件來實(shí)現(xiàn)的,并且通過老師的細(xì)心講解,在VC60平臺下,順利編寫了系統(tǒng)的運(yùn)行程序、實(shí)現(xiàn)了系統(tǒng)的數(shù)據(jù)接收、自動發(fā)送以及數(shù)據(jù)的自動清理。通過調(diào)用WINDOWS的API函數(shù),清楚地掌握串口通信的機(jī)制,相對比較自由靈活,串口通信包括同步串口通信與異步串口通信兩種工作方式。通過自己掌握的控件法及上網(wǎng)查找資料了解了不少關(guān)于串行通信傳輸?shù)闹R,讓我掌握了原本書本上學(xué)不到的內(nèi)容同時也讓我明白想真正的掌握串口通信的內(nèi)容,還要不斷地學(xué)習(xí)新知識,不斷地實(shí)踐、摸索。參考文獻(xiàn)1(美)史蒂芬(STEVENS,A),林麗閩譯標(biāo)準(zhǔn)C寶典M北京電子工業(yè)出版社,200122王莉,陽春華基于VC的串口通信設(shè)計及其應(yīng)用J控制工程,2004,113王華,岳麗全,岳志高M(jìn)SCOMM控件在VC60串口通信中的應(yīng)用長春工程學(xué)院學(xué)報自然科學(xué)版,2009,1014龔建偉,熊光明VISUALC/TURBOC串口通信編程實(shí)踐M電子工業(yè)出版社2004257268附頁程序/MSCOMMDLGCPPIMPLEMENTATIONFILE/INCLUDE“STDAFXH“INCLUDE“MSCOMMH“INCLUDE“MSCOMMDLGH“IFDEF_DEBUGDEFINENEWDEBUG_NEWUNDEFTHIS_FILESTATICCHARTHIS_FILE_FILE_ENDIF/CABOUTDLGDIALOGUSEDFORAPPABOUTCLASSCABOUTDLGPUBLICCDIALOGPUBLICCABOUTDLG/DIALOGDATA/AFX_DATACABOUTDLGENUMIDDIDD_ABOUTBOX/AFX_DATA/CLASSWIZARDGENERATEDVIRTUALFUNCTIONOVERRIDES/AFX_VIRTUALCABOUTDLGPROTECTEDVIRTUALVOIDDODATAEXCHANGECDATAEXCHANGEPDX/DDX/DDVSUPPORT/AFX_VIRTUAL/IMPLEMENTATIONPROTECTED/AFX_MSGCABOUTDLG/AFX_MSGDECLARE_MESSAGE_MAPCABOUTDLGCABOUTDLGCDIALOGCABOUTDLGIDD/AFX_DATA_INITCABOUTDLG/AFX_DATA_INITVOIDCABOUTDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDX/AFX_DATA_MAPCABOUTDLG/AFX_DATA_MAPBEGIN_MESSAGE_MAPCABOUTDLG,CDIALOG/AFX_MSG_MAPCABOUTDLG/NOMESSAGEHANDLERS/AFX_MSG_MAPEND_MESSAGE_MAP/CMSCOMMDLGDIALOGCMSCOMMDLGCMSCOMMDLGCWNDPPARENT/NULL/CDIALOGCMSCOMMDLGIDD,PPARENT/AFX_DATA_INITCMSCOMMDLGM_RECV1_T“M_SEND1_T“M_RECV2_T“M_SEND2_T“/AFX_DATA_INIT/NOTETHATLOADICONDOESNOTREQUIREASUBSEQUENTDESTROYICONINWIN32M_HICONAFXGETAPPLOADICONIDR_MAINFRAMEVOIDCMSCOMMDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDX/AFX_DATA_MAPCMSCOMMDLGDDX_CONTROLPDX,IDC_MSCOMM2,M_MSCOM2DDX_CONTROLPDX,IDC_MSCOMM1,M_MSCOM1DDX_TEXTPDX,IDC_COM1_RECEIVE,M_RECV1DDX_TEXTPDX,IDC_COM1_SEND,M_SEND1DDX_TEXTPDX,IDC_COM2_RECEIVE,M_RECV2DDX_TEXTPDX,IDC_COM2_SEND,M_SEND2/AFX_DATA_MAPBEGIN_MESSAGE_MAPCMSCOMMDLG,CDIALOG/AFX_MSG_MAPCMSCOMMDLGON_WM_SYSCOMMANDON_WM_PAINTON_WM_QUERYDRAGICONON_BN_CLICKEDIDC_BTN_COM1SEND,ONBTNCOM1SENDON_BN_CLICKEDIDC_BTN_COM1DELETE,ONBTNCOM1DELETEON_BN_CLICKEDIDC_BTN_COM2DELETE,ONBTNCOM2DELETEON_BN_CLICKEDIDC_BTN_COM2SEND,ONBTNCOM2SEND/AFX_MSG_MAPEND_MESSAGE_MAP/CMSCOMMDLGMESSAGEHANDLERSBOOLCMSCOMMDLGONINITDIALOGCDIALOGONINITDIALOG/ADD“ABOUT“MENUITEMTOSYSTEMMENU/IDM_ABOUTBOXMUSTBEINTHESYSTEMCOMMANDRANGEASSERTIDM_ABOUTBOXASSERTIDM_ABOUTBOXAPPENDMENUMF_SEPARATORPSYSMENUAPPENDMENUMF_STRING,IDM_ABOUTBOX,STRABOUTMENU/SETTHEICONFORTHISDIALOGTHEFRAMEWORKDOESTHISAUTOMATICALLY/WHENTHEAPPLICATIONSMAINWINDOWISNOTADIALOGSETICONM_HICON,TRUE/SETBIGICONSETICONM_HICON,FALSE/SETSMALLICON/TODOADDEXTRAINITIALIZATIONHERE/初始化COM1M_MSCOM1SETCOMMPORT1/串口1M_MSCOM1SETINBUFFERSIZE1024/設(shè)置輸入緩沖區(qū)的大小,BYTESM_MSCOM1SETOUTBUFFERSIZE512/設(shè)置輸入緩沖區(qū)的大小,BYTESIFM_MSCOM1GETPORTOPEN/打開串口M_MSCOM1SETPORTOPENTRUEM_MSCOM1SETINPUTMODE1/設(shè)置輸入方式為二進(jìn)制方式M_MSCOM1SETSETTINGS“9600,N,8,1“/設(shè)置波特率等參數(shù)M_MSCOM1SETRTHRESHOLD1/為1表示有一個字符即引發(fā)事件M_MSCOM1SETINPUTLEN0/初始化COM2M_MSCOM2SETCOMMPORT2/串口2M_MSCOM2SETINBUFFERSIZE1024/設(shè)置輸入緩沖區(qū)的大小,BYTESM_MSCOM2SETOUTBUFFERSIZE512/設(shè)置輸入緩沖區(qū)的大小,BYTESIFM_MSCOM2GETPORTOPEN/打開串口M_MSCOM2SETPORTOPENTRUEM_MSCOM2SETINPUTMODE1/設(shè)置輸入方式為二進(jìn)制方式M_MSCOM2SETSETTINGS“9600,N,8,1“/設(shè)置波特率等參數(shù)M_MSCOM2SETRTHRESHOLD1/為1表示有一個字符即引發(fā)事件M_MSCOM2SETINPUTLEN0RETURNTRUE/RETURNTRUEUNLESSYOUSETTHEFOCUSTOACONTROLVOIDCMSCOMMDLGONSYSCOMMANDUINTNID,LPARAMLPARAMIFNIDDLGABOUTDOMODALELSECDIALOGONSYSCOMMANDNID,LPARAM/IFYOUADDAMINIMIZEBUTTONTOYOURDIALOG,YOUWILLNEEDTHECODEBELOW/TODRAWTHEICONFORMFCAPPLICATIONSUSINGTHEDOCUMENT/VIEWMODEL,/THISISAUTOMATICALLYDONEFORYOUBYTHEFRAMEWORKVOIDCMSCOMMDLGONPAINTIFISICONICCPAINTDCDCTHIS/DEVICECONTEXTFORPAINTINGSENDMESSAGEWM_ICONERASEBKGND,WPARAMDCGETSAFEHDC,0/CENTERICONINCLIENTRECTANGLEINTCXICONGETSYSTEMMETRICSSM_CXICONINTCYICONGETSYSTEMMETRICSSM_CYICONCRECTRECTGETCLIENTRECTINTXRECTWIDTHCXICON1/2INTYRECTHEIGHTCYICON1/2/DRAWTHEICONDCDRAWICONX,Y,M_HICONELSECDIALOGONPAINT/THESYSTEMCALLSTHISTOOBTAINTHECURSORTODISPLAYWHILETHEUSERDRAGS/THEMINIMIZEDWINDOWHCURSORCMSCOMMDLGONQUERYDRAGICONRETURNHCURSORM_HICONBEGIN_EVENTSINK_MAPCMSCOMMDLG,CDIALOG/AFX_EVENTSINK_MAPCMSCOMMDLGON_EVENTCMSCOMMDLG,IDC_MSCOMM1,1/ONCOMM/,ONCOMMMSCOMM1,VTS_NONEON_EVENTCMSCOMMDLG,IDC_MSCOMM2,1/ONCOMM/,ONCOMMMSCOMM2,VTS_NONE/AFX_EVENTSINK_MAPEND_EVENTSINK_MAP/MSCOMM1控件發(fā)出ONCOMM事件的響應(yīng)函數(shù),在該函數(shù)中讀取串口字符串VOIDCMSCOMMDLGONCOMMMSCOMM1/TODOADDYOURCONTROLNOTIFICATIONHANDLERCODEHEREUPDATEDATATRUE/定義一些臨時變量VARIANTVARIANT_INPCOLESAFEARRAYSAFEARRAY_INPLONGI0INTLENBYTERXDATA1000SWITCHM_MSCOM1GETCOMMEVENTCASE2/表示接收緩沖區(qū)內(nèi)有字符/讀取緩沖區(qū)數(shù)據(jù)VARIANT_INPM_MSCOM1GETINPUT/將VARIANT型變量值賦給COLESAFEARRAY類型變量SAFEARRAY_INPVARIANT_INP/獲得數(shù)據(jù)長度LENSAFEARRAY_INPGETONEDIMSIZE/將數(shù)據(jù)保存到字符數(shù)組中FORI0I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟萌風(fēng)格話術(shù)
- 高效練琴溝通指南
- 這才是醫(yī)患關(guān)系的正確
- 信任與關(guān)懷:醫(yī)患關(guān)系的核心
- 促成買單話術(shù)技巧
- 家長安全告知書講解
- 保險階梯圖話術(shù)模板
- 護(hù)理考試備考指南
- 2026年及未來5年市場數(shù)據(jù)中國汽車用鋼管市場競爭策略及行業(yè)投資潛力預(yù)測報告
- 護(hù)理團(tuán)隊建設(shè)與領(lǐng)導(dǎo)力
- ?;愤\(yùn)輸職業(yè)健康培訓(xùn)
- 病房管理組質(zhì)控總結(jié)
- 2025-2026學(xué)年蘇教版三年級科學(xué)上冊(全冊)每課知識點(diǎn)清單
- 基于STM32單片機(jī)的智能水杯設(shè)計
- 朗誦技巧指導(dǎo)教學(xué)課件
- 2025年大學(xué)實(shí)驗(yàn)室安全知識試題及答案
- 西游記五莊觀課件
- 2025年幼兒教師之《幼兒游戲與指導(dǎo)》考試題庫(附答案)
- 四川佰思格新材料科技有限公司鈉離子電池硬碳負(fù)極材料生產(chǎn)項(xiàng)目環(huán)評報告
- 知道智慧樹管理學(xué)(浙江財經(jīng)大學(xué))滿分測試答案
- 2025年廣西中考英語試卷真題(含答案解析)+聽力音頻
評論
0/150
提交評論