串口調(diào)試軟件實(shí)驗(yàn)__山東建筑大學(xué)應(yīng)用軟件綜合實(shí)驗(yàn).doc_第1頁
串口調(diào)試軟件實(shí)驗(yàn)__山東建筑大學(xué)應(yīng)用軟件綜合實(shí)驗(yàn).doc_第2頁
串口調(diào)試軟件實(shí)驗(yàn)__山東建筑大學(xué)應(yīng)用軟件綜合實(shí)驗(yàn).doc_第3頁
串口調(diào)試軟件實(shí)驗(yàn)__山東建筑大學(xué)應(yīng)用軟件綜合實(shí)驗(yàn).doc_第4頁
串口調(diào)試軟件實(shí)驗(yàn)__山東建筑大學(xué)應(yīng)用軟件綜合實(shí)驗(yàn).doc_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

山東建筑大學(xué)實(shí)驗(yàn)報(bào)告學(xué)院: 信電學(xué)院 班級(jí):電信112 姓名: 王丙全 學(xué)號(hào): 2011081245 課程:應(yīng)用軟件綜合實(shí)驗(yàn) 實(shí)驗(yàn)日期:2014年 12月25日 成績(jī): 摘要串口叫做串行接口,也稱串行通信接口,按電氣標(biāo)準(zhǔn)及協(xié)議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標(biāo)準(zhǔn)只對(duì)接口的電氣特性做出規(guī)定,不涉及接插件、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標(biāo)準(zhǔn),主要應(yīng)用于高速數(shù)據(jù)傳輸領(lǐng)域。串口通訊因具有簡(jiǎn)單,組網(wǎng)方便的特點(diǎn),在設(shè)備通訊中廣泛使用。普通計(jì)算機(jī)中采用的是RS232通用通訊接口,通過此接口,計(jì)算機(jī)簡(jiǎn)單方便地與外圍設(shè)備進(jìn)行通訊。在單片機(jī)控制領(lǐng)域,設(shè)備與設(shè)備之間的通訊常用串行通訊方式,常采用的硬件通訊網(wǎng)絡(luò)為RS485/RS422/RS232等。在設(shè)備開發(fā)或設(shè)備維護(hù)過程中,常常需要對(duì)設(shè)備通訊過程進(jìn)行數(shù)據(jù)檢測(cè),用于判斷通訊是否正常。實(shí)現(xiàn)這個(gè)調(diào)試過程,需要計(jì)算機(jī)通訊軟件對(duì)通訊過程進(jìn)行監(jiān)控,數(shù)據(jù)采集,進(jìn)行數(shù)據(jù)分析。關(guān)鍵詞: 串行通信,串口調(diào)試,SerialPort類1 設(shè)計(jì)目的和要求設(shè)計(jì)目的現(xiàn)在的產(chǎn)品若要自動(dòng)化,一定要提供通道與計(jì)算機(jī)進(jìn)行通信,而最簡(jiǎn)單的方式就是在產(chǎn)品內(nèi)部少上一顆單芯片,利用單芯片上的串行通信功能進(jìn)行自動(dòng)化的工作,由于計(jì)算機(jī)中的串口是必備的通道,且以價(jià)格及技術(shù)上來說是最能被廠商所接受的,因此,市面上很多自動(dòng)化產(chǎn)品也都加上了串行通信的功能,從而擴(kuò)大產(chǎn)品的使用領(lǐng)域,使實(shí)現(xiàn)技術(shù)變得簡(jiǎn)單化。與任何一個(gè)自動(dòng)化設(shè)備進(jìn)行聯(lián)機(jī),最好是先對(duì)該系統(tǒng)的通信功能先進(jìn)行測(cè)試。通過串行通信的控制,通??梢詫a(chǎn)品內(nèi)部開放的功能做一個(gè)先期的測(cè)試工作,確定沒有問題了,然后再對(duì)系統(tǒng)進(jìn)行程序的實(shí)現(xiàn),這是一個(gè)比較保險(xiǎn)的做法,免得在系統(tǒng)設(shè)計(jì)到設(shè)計(jì)到一半的時(shí)候發(fā)現(xiàn)最重要的通信功能有問題,浪費(fèi)了大量的寶貴時(shí)間。設(shè)計(jì)要求本題目要求完成一個(gè)RS232串口的調(diào)試軟件。1可實(shí)時(shí)顯示收到的字節(jié),可以文本和16進(jìn)制兩種方式現(xiàn)實(shí)。2可以發(fā)送任意數(shù)值的數(shù)據(jù)。3可設(shè)置串口的工作方式。4其他功能。2 設(shè)計(jì)內(nèi)容2.1串口容器設(shè)計(jì)串口容器組件主要提供了一個(gè)統(tǒng)一管理已經(jīng)創(chuàng)建的串口的空間,并提供了多線程緩沖處理機(jī)制,能夠應(yīng)對(duì)多個(gè)串口的高速數(shù)據(jù)收發(fā)工作。包括的主要功能有:(1) 提供了創(chuàng)建、更改和釋放RS232串口的接口函數(shù)(2) 對(duì)多個(gè)串口的數(shù)據(jù)接收并賦值相同的回調(diào)函數(shù)(3) 接收數(shù)據(jù)的多線程緩沖功能,并提供線程數(shù)量設(shè)置接口(4) 數(shù)據(jù)流量偵測(cè)功能2.2串口創(chuàng)建管理界面設(shè)計(jì)主要功能包括:(1) 計(jì)算機(jī)可用串口自動(dòng)偵測(cè)(2) 新建串口功能(串口名、波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn))(3) 單獨(dú)控制串口停止運(yùn)行(4) 單獨(dú)修改串口配置(5) 刪除串口2.3數(shù)據(jù)發(fā)送接收界面設(shè)計(jì)數(shù)據(jù)發(fā)送接收界面分為兩部分內(nèi)容:數(shù)據(jù)接收界面和發(fā)送界面。系統(tǒng)采用大比例的接收現(xiàn)實(shí)區(qū)和發(fā)送區(qū),這種設(shè)計(jì)方式不僅有效地增加了顯示區(qū)的可視區(qū)域,也符合用戶常規(guī)軟件的操作習(xí)慣。包括的主要功能有:(1) 顯示接收時(shí)間(2) 顯示接收數(shù)據(jù)的通訊標(biāo)識(shí)(3) 十六進(jìn)制顯示接收數(shù)據(jù)(4) 可單獨(dú)或同時(shí)向多個(gè)串口發(fā)送數(shù)據(jù)(5) 十六進(jìn)制發(fā)送數(shù)據(jù)(6) 發(fā)送數(shù)據(jù)自動(dòng)記錄(7) 自動(dòng)發(fā)送功能2.4數(shù)據(jù)存儲(chǔ)設(shè)計(jì)主要功能有:(1) 數(shù)據(jù)保存緩沖功能(2) 自動(dòng)建立存儲(chǔ)目錄結(jié)構(gòu)(3) 自動(dòng)保存接收數(shù)據(jù)(4) 數(shù)據(jù)另存功能2.5串行通信協(xié)議在串行通信過程中,數(shù)據(jù)和聯(lián)絡(luò)信號(hào)時(shí)使用同一根信號(hào)線來傳送的,所以收發(fā)雙方必須考慮解決一下問題:1)雙方約定以何種速率進(jìn)行數(shù)據(jù)的發(fā)送和接收(波特率);2)約定采用何種數(shù)據(jù)格式(幀格式),如果包含控制信息,那么它的定義是什么;3)接收方如何得知一批數(shù)據(jù)的開始和結(jié)束(幀同步);4)接收方如何從位流中正確地采樣到位數(shù)據(jù)(位同步);5)接收方如何判斷收到數(shù)據(jù)的正確性(數(shù)據(jù)校驗(yàn));6)收發(fā)出錯(cuò)時(shí)如何進(jìn)行處理。顯然,收發(fā)雙方必須遵守一些共同的通信協(xié)議5(或稱為通信控制規(guī)程),才能解決以上問題。在傳輸數(shù)字信號(hào)時(shí)接收端必須有與數(shù)據(jù)位脈沖具有相同頻率的時(shí)鐘脈沖來逐位將數(shù)據(jù)讀入寄存器,這種在接收端使數(shù)據(jù)位與時(shí)鐘脈沖在頻率和相位上保持一致的機(jī)制稱為同步。根據(jù)在接收端獲取同步信號(hào)的方法不同,同步方式可分為位同步方式和字符同步方式,也稱為同步傳輸方式和異步傳輸方式。2.5.1同步通信同步通信即位同步方式,同步通信即位同步方式,是利用編碼機(jī)制把時(shí)鐘信息和數(shù)據(jù)放在一起發(fā)送給接收端,以保證每一位的正確性,但這種同步方式?jīng)]有辦法來區(qū)分字符之間的界限,從一個(gè)二進(jìn)制位串中提取正確的字符信息。為此,在位同步的基礎(chǔ)上,需要發(fā)送方在一組數(shù)據(jù)前附加一個(gè)或兩個(gè)稱為同步字符的特殊約定代碼,去通知接收器串行數(shù)據(jù)第一位到達(dá)的時(shí)間。為了確保正確提取字符,字符之間不能有類似于異步傳輸那樣的間隙,必須以連續(xù)的形式發(fā)送,每個(gè)時(shí)鐘周期發(fā)送一位數(shù)據(jù),數(shù)據(jù)信息后是兩個(gè)錯(cuò)誤校驗(yàn)字符。接收方在收到同步字符后,立即開始按事先約定的長(zhǎng)度(5、6、7或者8位)從位串中逐個(gè)提出字符。同步通信采用的同步手段和同步字符的個(gè)數(shù)不同,字符的數(shù)據(jù)格式叫做單同步數(shù)據(jù)格式,數(shù)據(jù)格式。存在著不同的格式結(jié)構(gòu),具有一個(gè)同步有兩個(gè)同步字符的數(shù)據(jù)格式叫做雙同步異步通信中按字符成幀(從起始位到停止位)進(jìn)行傳送,而同步傳送則采用數(shù)據(jù)塊或幀進(jìn)行傳送6。圖中所示為某同步協(xié)議的幀格式,在幀開頭有同步字符SYNC,同步字符的格式和個(gè)數(shù)根據(jù)需要確定,其作用是通知接收器“消息到達(dá)”,并且接收器和發(fā)送器需要開始同步。同步字符后的第一個(gè)數(shù)據(jù)是消息頭或稱為報(bào)頭,它包含有助于接收器如何處理后續(xù)數(shù)據(jù)的控制信息,如一幀內(nèi)的字符計(jì)數(shù)等,再以后是以字符或者比特為單位的消息編碼,也稱為報(bào)文,最后是校驗(yàn)字符,常用CRC循環(huán)冗余校驗(yàn)碼,校驗(yàn)字的作用是檢測(cè)整個(gè)數(shù)據(jù)塊在傳送過程中是否有差錯(cuò)。同步通信的數(shù)據(jù)傳輸效率較異步通信高,傳輸速率也較高但是同步傳送不僅要保持每個(gè)數(shù)據(jù)字符內(nèi)各位以預(yù)定的固定時(shí)鐘頻率傳送,而且還要求整個(gè)數(shù)據(jù)塊內(nèi)的位都按照預(yù)定的固定時(shí)鐘頻率傳送,此外數(shù)據(jù)塊之間不允許有間隙,若有間隙必須用同步字符填充。收發(fā)雙方時(shí)鐘嚴(yán)格同步是同步通信的基本要求,在技術(shù)上,這種要求必須用硬件從接收到的數(shù)據(jù)中分離出同步時(shí)鐘來實(shí)現(xiàn),所以硬件電路復(fù)雜是同步通信的缺點(diǎn)。2.5.2異步通信串行異步通信即異步傳輸方式是以字符為單位進(jìn)行傳輸,其通信協(xié)議是起止式異步通信協(xié)議。一個(gè)字符正式發(fā)送之前,先發(fā)送一個(gè)起始位,寬度為1位的低電平;結(jié)束時(shí)發(fā)送一個(gè)寬度為l位,15位或者2位的高電平作為停止位;數(shù)據(jù)位為5-8位,可在數(shù)據(jù)位內(nèi)設(shè)1位奇偶校驗(yàn)位,字符之間可以有空閑位,它們都是高電平。異步傳輸過程中的起始位和停止位起著重要的作用:起始位標(biāo)志著每一個(gè)字符的開始,停止位標(biāo)志著每一個(gè)字符的結(jié)束。由于串行通信采用起始位為同步信號(hào),接收端總是在每個(gè)字符的頭部即起始位處進(jìn)行一次重新定位,保證每次采樣對(duì)應(yīng)一個(gè)數(shù)據(jù)位。所以異步傳送的發(fā)送器和接收器不必用同一個(gè)時(shí)鐘,而是各有自己的局部時(shí)鐘,只要同一標(biāo)稱頻率即可。異步傳送以字符為單位,當(dāng)接收方收到起始位之后,只要在一個(gè)字符的傳輸時(shí)問內(nèi)能和發(fā)送器保持同步,就能完成正確的接收。如果接收器和發(fā)送器的時(shí)鐘略有誤差,兩個(gè)字符之間的停止間隔將為這種誤差提供一種緩沖,因此,異步通信方式允許有一定的頻率漂移,一般發(fā)送器和接收器雙方各自用晶振產(chǎn)生時(shí)鐘即可滿足要求,收發(fā)雙方系統(tǒng)時(shí)鐘的誤差容限為5對(duì)時(shí)鐘同步的要求不太嚴(yán)格,這是異步通信的突出優(yōu)點(diǎn),但是異步通信要求每個(gè)字符傳送都有起始位和停止位,因此控制信息至少占總信息的20,這部分的額外開銷使得傳送效率相對(duì)比較低。2.6串行通信的基本參數(shù)串口的通信方式是將字節(jié)拆分成一個(gè)接著一個(gè)的位后再進(jìn)行傳輸。接到此電位信號(hào)的一方將此一個(gè)一個(gè)的位組合成原來的字節(jié),如此形成一個(gè)字節(jié)的完整傳輸。在傳輸進(jìn)行過程中,雙方明確傳輸信息的具體方式,否則雙方就會(huì)沒有一套共同的譯碼方式,從而無法了解對(duì)方所傳輸過來的信息的意義。因此雙方為了進(jìn)行通信規(guī)則,這個(gè)共同的規(guī)則就是串口的初始化9。串口的初始化必須對(duì)以下幾項(xiàng)參數(shù)進(jìn)行設(shè)置。2.6.1 波特率串行通信的傳輸受到通信雙方設(shè)備性能及通信線路的特性所控制,收發(fā)雙方必須按照同樣的速率進(jìn)行串行通信,即收發(fā)雙方采用同樣的波特率。我們通常將傳輸速度稱為波特率,指的是串行通信中每秒所傳輸?shù)臄?shù)據(jù)位數(shù)。單位是“波特每秒”(bps)。國(guó)際上規(guī)定了標(biāo)準(zhǔn)波特率系列值,最常用的標(biāo)準(zhǔn)波特率有110,300,600。1200,2400,4800,9600和19200。在進(jìn)行串行通信時(shí),根據(jù)傳送的波特率來確定發(fā)送時(shí)鐘和接收時(shí)鐘的頻率。異步傳送過程中,每發(fā)送一位數(shù)據(jù)的時(shí)間長(zhǎng)度由發(fā)送時(shí)鐘決定,每接收一位數(shù)據(jù)的時(shí)間長(zhǎng)度由接收時(shí)鐘測(cè)定,它們和波特率有如下關(guān)系:時(shí)鐘頻率=n*波特率;式中n為波特率系數(shù)或者波特率因子,它的取值可以為l,16,32或64。2.6.2數(shù)據(jù)的傳輸單位一般串口所傳輸?shù)臄?shù)據(jù)時(shí)字符型,若用來傳輸文件,則會(huì)使用二進(jìn)制的數(shù)據(jù)形式。當(dāng)使用字符型時(shí),工業(yè)界使用到的ASCII字符及JIS字符;ASCII碼使用了8位形成一個(gè)字符,而JIS碼則以7位形成一個(gè)字符。歐美的設(shè)備多使用8位的字節(jié),而日本的設(shè)備多使用7位為一個(gè)字節(jié)。因此只要7位就可以將ASCII碼的0127碼表達(dá)出來(27=128,共有128種組合方式),所有的可見字符也在此范圍內(nèi),所以只要7個(gè)數(shù)據(jù)位就夠了。不同的情形下(根據(jù)所使用的協(xié)議),會(huì)使用到不同的傳輸單位。使用多少位合成一個(gè)字節(jié)必須先行確定。2.6.3 起始位與停止位由于異步串行傳輸中沒有使用同步時(shí)鐘作為基準(zhǔn),因此接收端不知道發(fā)送端何時(shí)將進(jìn)行數(shù)據(jù)的傳輸。而當(dāng)發(fā)送端準(zhǔn)備要開始傳送數(shù)據(jù)時(shí),發(fā)送端會(huì)在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們稱為起始位和停止位。當(dāng)發(fā)送端要開始傳送數(shù)據(jù)時(shí),便將傳輸線上的電壓由低電位提升至高電位,而當(dāng)傳送結(jié)束后,再將電壓降至低電位。接收端會(huì)因?yàn)槠鹗嘉坏挠|發(fā)(因電壓由低電位升至高電位)而開始接收數(shù)據(jù),并因停止位的通知(因電壓維持在低電位)而確切知道數(shù)據(jù)的字符信號(hào)已經(jīng)結(jié)束。加入了起始位及停止位也比較容易達(dá)到多字符的接收能力,起始位固定為一位,而停止位則有1、1.5、2位等多種選擇,由通信雙方共同遵守的通信協(xié)議來控制和識(shí)別。2.6.4 校驗(yàn)位為了防止傳輸過程中的干擾造成數(shù)據(jù)錯(cuò)誤,數(shù)據(jù)幀中可以加入奇偶校驗(yàn)位作為檢查機(jī)制,校驗(yàn)位是用來檢查所傳輸數(shù)據(jù)正確性的一種核對(duì)碼,其中又分為奇校驗(yàn)(Odd Parity)和偶校驗(yàn)(Even Parity)兩種,分別是檢查字符碼中1的數(shù)目是奇數(shù)或是偶數(shù)以偶校驗(yàn)為例,A的ASCII碼是41H,即01000001x,其中1的數(shù)目是2,因此校驗(yàn)位是0,使1的數(shù)目保持偶數(shù)。同樣的,采用奇校驗(yàn)時(shí),A的校驗(yàn)位是1,使l的數(shù)目保持為奇數(shù)。將傳送字符按照上述說明組合起來之后,就形成了傳輸時(shí)每個(gè)字符的數(shù)據(jù)格式,串行通信字符的數(shù)據(jù)格式如下所示:起始位+傳送字符+校驗(yàn)位+停止位。3串口調(diào)試軟件的實(shí)現(xiàn)3.1串口調(diào)試軟件的編程實(shí)現(xiàn)過程 在本節(jié)中將介紹在Visual Studio 2005環(huán)境下,使用C#語言編程實(shí)現(xiàn)串口調(diào)試軟件的過程,在前文中我們介紹過了使用SerialPort類實(shí)現(xiàn)串口通信的一般流程是設(shè)置通訊端口號(hào)及波特率、數(shù)據(jù)位、停止位和校驗(yàn)位,再打開端口連接,發(fā)送數(shù)據(jù),接收數(shù)據(jù),最后關(guān)閉端口連接這樣幾個(gè)步驟。數(shù)據(jù)接收的設(shè)計(jì)方法在這里比較重要,采用輪詢的方法比較浪費(fèi)時(shí)間,在Visual Basic中的延時(shí)方法中一般會(huì)調(diào)用API并用DOEvents方法來處理,但程序不易控制,所以采用DataReceived事件觸發(fā)的方法,合理的設(shè)置ReceivedBytesThreshold的值,若接收的是定長(zhǎng)的數(shù)據(jù),則將Received Bytes Threshold設(shè)為接收數(shù)據(jù)的長(zhǎng)度,若接收數(shù)據(jù)的結(jié)尾是固定的字符或字符串則可采用ReadTo的方法或在DataReceived事件中判斷接收的字符是否滿足條件,符合條件的就進(jìn)行接收。SerialPort類讀取數(shù)據(jù)的許多方法是同步阻塞調(diào)用,盡量避免在主線程中調(diào)用,可以使用異步處理或線程間處理調(diào)用這些讀取數(shù)據(jù)的方法。由于Data Received事件在輔線程被引發(fā),當(dāng)收到完整的一條數(shù)據(jù),返回主線程處理或在窗體上顯示時(shí),要注意跨線程的處理,C#可采用控件異步委托的方法Control.BeginInvoke及同步委托的方法Invoke。圖5.1示出了串口調(diào)試軟件編程實(shí)現(xiàn)的流程圖。程序開始初始化串口輸入設(shè)定數(shù)據(jù)有數(shù)據(jù)返回嗎向串口發(fā)送數(shù)據(jù)觸發(fā)Data Received事件,處理數(shù)據(jù)返回?cái)?shù)據(jù)正確?程序結(jié)束是是否否顯示錯(cuò)誤信息提示打開串口關(guān)閉串口圖5.1 串口調(diào)試軟件算法流程圖附錄給出了串口調(diào)試軟件的C#編程實(shí)現(xiàn)的源代碼,這里就不再贅述。3.2串口調(diào)試軟件界面的設(shè)計(jì)串口調(diào)試軟件界面是在Visual Studio 2005(以下簡(jiǎn)稱VS2005)編程環(huán)境下設(shè)計(jì)的。VS2005是微軟公司開發(fā)的面向?qū)ο?、高度封裝的跨平臺(tái)C#圖形用戶界面開發(fā)平臺(tái),它能提供一個(gè)開發(fā)商業(yè)級(jí)別,多平臺(tái)應(yīng)用的軟件環(huán)境。首先新建一個(gè)項(xiàng)目,然后生成一個(gè)Form面板,調(diào)整到適當(dāng)?shù)拇笮?,再在其上放置Label控件、Button控件、TextBox控件、ComboBox控件、RadioButton控件、RichTextBox控件、CheckBox控件等。Label控件實(shí)現(xiàn)對(duì)TextBox控件和ComboBox控件的注釋說明。Button控件通過鼠標(biāo)點(diǎn)擊發(fā)出命令,計(jì)算機(jī)執(zhí)行相應(yīng)的動(dòng)作;ComboBox控件通過鼠標(biāo)點(diǎn)擊彈出選擇的項(xiàng)目列表,用戶選擇當(dāng)前需要的選項(xiàng),在這里是主要實(shí)現(xiàn)串口號(hào)、波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位的選擇;TextBox控件和RichTextBox控件實(shí)現(xiàn)讀寫字符串,也就是輸入用戶需要發(fā)送的信息以及接收對(duì)方發(fā)送的信息。界面編寫完成后,點(diǎn)擊VS2005工具欄中的【調(diào)試】,然后在下拉菜單中選擇【啟動(dòng)調(diào)試】便進(jìn)入調(diào)試過程,調(diào)試通過后便會(huì)在項(xiàng)目中生成.exe應(yīng)用程序文件。3.3 串口調(diào)試軟件的測(cè)試當(dāng)串口調(diào)試軟件設(shè)計(jì)好之后,接下來就進(jìn)入了軟件測(cè)試階段,主要是對(duì)該軟件的功能進(jìn)行測(cè)試,看是否達(dá)到了預(yù)期的要求。單機(jī)測(cè)試方式如果單機(jī)僅僅擁有一個(gè)RS232串口,可以將RS232串口的第2引腳(RD)與第3引腳(TD)短路,那么由第3引腳的輸出信號(hào)就會(huì)被發(fā)送到第2引腳而送到同一串行端口的輸入緩沖區(qū),即可將數(shù)據(jù)讀入,進(jìn)入測(cè)試過程。如果單機(jī)擁有COM1和COM2兩個(gè)RS232串口,那么就以全握手連接方式將兩個(gè)串口連接,進(jìn)入測(cè)試過程。如果單機(jī)上一個(gè)串口也沒有,或者串口被其他設(shè)備所用,由于串口具有獨(dú)占性,如果被其他設(shè)備占用,那么就不能由我們編寫的程序來控制。這時(shí)可以使用第三方軟件提供的虛擬串口,來解決這個(gè)問題。近距離兩臺(tái)設(shè)備測(cè)試方式如果要在兩臺(tái)PC計(jì)算機(jī)之間,一個(gè)嵌入式系統(tǒng)主控機(jī)和一臺(tái)PC計(jì)算機(jī)之間,或者上位機(jī)和下位機(jī)之間進(jìn)行串口通信,那么就選擇全握手方式將兩個(gè)RS232串口連接,進(jìn)入測(cè)試過程。遠(yuǎn)距離兩臺(tái)通信測(cè)試方式RS232標(biāo)準(zhǔn)規(guī)定,若不使用Modem,在碼元畸變小于4%的情況下,DTE和DCE通信端之間最大傳輸距離為15m,如距離較遠(yuǎn),須附加調(diào)制解調(diào)器(Medom),其連接方式如圖5.2所示。圖5.2 遠(yuǎn)距離串口通信連接方式當(dāng)調(diào)試時(shí),用戶根據(jù)實(shí)際情況選擇相應(yīng)的串行端口,設(shè)定所需的波特率(在此選用9600),再設(shè)置奇偶校驗(yàn)位、數(shù)據(jù)位、停止位;點(diǎn)擊“打開串口”按鈕便可以進(jìn)行數(shù)據(jù)的發(fā)送和接收,當(dāng)在發(fā)送文本框中輸入數(shù)據(jù),點(diǎn)擊“發(fā)送”按鈕便可以將數(shù)據(jù)發(fā)送到接收方;或者對(duì)方發(fā)送數(shù)據(jù),可以在接收文本框中看到接收到的數(shù)據(jù)??梢酝ㄟ^“清空接收區(qū)”按鈕清除接收的數(shù)據(jù)。此外,還可以在“自動(dòng)發(fā)送周期”文本框中輸入自動(dòng)發(fā)送的周期(單位是毫秒),然后勾選“自動(dòng)發(fā)送”按鈕,則該軟件就可以按照事先設(shè)定好的發(fā)送周期,自動(dòng)向接收方發(fā)送數(shù)據(jù)。實(shí)踐證明,本軟件具有以下特點(diǎn):1操作簡(jiǎn)單,界面友好,使用者完成參數(shù)設(shè)置后,即可進(jìn)行串口調(diào)試。2功能全面。軟件可以讀串口數(shù)據(jù),可以按照周期自動(dòng)發(fā)送數(shù)據(jù)或者只發(fā)送一次數(shù)據(jù)。此外軟件還有完善的顯示方式,包括二進(jìn)制,十六進(jìn)制等,以及在接收區(qū)內(nèi)換行顯示,和一鍵清空接收區(qū)等功能。3可擴(kuò)展性強(qiáng)。在VS2005中可以對(duì)本軟件進(jìn)行功能上擴(kuò)展,例如添加新的功能按鈕以實(shí)現(xiàn)新的功能16山東建筑大學(xué)實(shí)驗(yàn)報(bào)告學(xué)院: 信息與電氣工程學(xué)院 班級(jí):電信112 姓名: 王丙全 學(xué)號(hào): 2011081245 課程:應(yīng)用軟件綜合實(shí)驗(yàn) 實(shí)驗(yàn)日期:2014年 12月 25 日 成績(jī): 總結(jié)與致謝本文以串行通信技術(shù)和串口工作原理為基礎(chǔ),進(jìn)行了串行數(shù)據(jù)傳輸協(xié)議設(shè)計(jì)的研究,在此基礎(chǔ)上,結(jié)合了C#SerialPort類使用方法和Visual Studio 20005開發(fā)工具,設(shè)計(jì)串口調(diào)試軟件,并研究了通用串口通信程序的設(shè)計(jì)方法,以期解決工程實(shí)踐中存在的串行通信協(xié)議不可見和相對(duì)阻戴所帶來的問題。文中詳細(xì)介闡述了在Visual Studio 2005編程環(huán)境下串口調(diào)試軟件的具體實(shí)現(xiàn)方法。通過這次綜合實(shí)驗(yàn),我發(fā)現(xiàn)自己學(xué)到很多有用的東西。從整個(gè)程序流程圖到C#編程再到Windows應(yīng)用程序界面設(shè)計(jì),以及上下位機(jī)的通訊,所有這些讓我真正的了解到了一個(gè)產(chǎn)品設(shè)計(jì)的實(shí)現(xiàn)過程。為了使串口調(diào)試軟件更加人性化,我還在原先的基礎(chǔ)上添加了清空接收區(qū)數(shù)據(jù)和換行顯示的功能,使得整體的方案得到了新的提高。雖然整個(gè)過程相當(dāng)艱辛,但是總的來說,看到實(shí)物的效果時(shí),還是很開心的,慶幸自己曾經(jīng)的付出,是種別樣的幸福!當(dāng)然,實(shí)驗(yàn)還有很多需要改進(jìn)與提高的地方,比如在發(fā)送字符串?dāng)?shù)據(jù)的基礎(chǔ)上增加發(fā)送中文漢字的功能,這樣串口調(diào)試軟件就具備了一個(gè)聊天的程序的功能,此外還可擴(kuò)展它的數(shù)據(jù)接收功能,將數(shù)據(jù)保存為.xls或.txt文件,這樣可以方便用戶對(duì)數(shù)據(jù)的查看、分析和處理。附錄串口調(diào)試軟件的C#源代碼Private Sub Form_Load() MSComm1.Settings = 9600,n,8,1 波特率9600bit/s,無校驗(yàn),8位數(shù)據(jù),1位停止位 MSComm1.CommPort = 4 設(shè)定串口,1為com1,這里根據(jù)自己對(duì)應(yīng)的com序號(hào) MSComm1.InBufferSize = 8 設(shè)定返回接收緩沖區(qū)的大小,以字符為單位 MSComm1.OutBufferSize = 2 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False 關(guān)串口 MSComm1.RThreshold = 4 設(shè)置并返回產(chǎn)生oncomm 事件的字符數(shù),以字符為單位 MSComm1.SThreshold = 1 為1,傳輸緩沖區(qū)(發(fā)送)的每一個(gè)字符都會(huì)使MSCOMM控件產(chǎn)生OnComm事件 MSComm1.InputLen = 0 設(shè)置從接收緩沖區(qū)讀取的字?jǐn)?shù),為0讀取整個(gè)緩沖區(qū) MSComm1.InputMode = comInputModeText 以文本方度接收 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True MSComm1.InBufferCount = 0 Me.Caption = 溫度Text1.Text = 00.0End SubPrivate Sub MSComm1_OnComm() Dim rec As String Select Case MSComm1.CommEvent Case comEvReceive rec = MSComm1.Input Text1.Text = rec MSComm1.InBufferCount = 0 清空接收緩存區(qū) End SelectEnd SubOption Explicit Dim a As Integer Dim BytReceived() As Byte Dim strData As String Dim lenInput As Integer Dim bytSendByte() As Byte 發(fā)送二進(jìn)制數(shù)據(jù) Dim strSendText As String 發(fā)送文本數(shù)據(jù) Dim blnAutoSendFlag As Boolean Dim openFlag As BooleanPrivate Sub cmdOpen_Click() 打開關(guān)閉端口 If openFlag Then cmdOpen.Caption = 打開串口 MSComm1.PortOpen = False 打開端口 Shape1.FillColor = vbRed Label1 = COM & a & 關(guān)閉 Else OpenPortNum cmdOpen.Caption = 關(guān)閉串口 Shape1.FillColor = vbGreen Label1 = COM & a & 打開 End If openFlag = Not openFlagEnd SubPrivate Sub cmdSendASc_Click() 文本發(fā)送 Dim sj_Txt As String sj_Txt = TxtSend If MSComm1.PortOpen = True Then MSComm1.Output = sj_Txt End IfEnd SubPrivate Sub cmdSendHex_Click() 16進(jìn)制發(fā)送 Dim sj() As Byte Dim sj_Txt As String Dim i As Integer sj_Txt = TxtSend If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) 0 Then 檢驗(yàn)16進(jìn)制字符串長(zhǎng) ReDim sj(Len(sj_Txt) / 2 - 1) For i = 0 To Len(sj_Txt) - 1 Step 2 sj(i / 2) = Val(&H & Mid(sj_Txt, i + 1, 2) Next If MSComm1.PortOpen = True Then MSComm1.Output = sj Else MSComm1.PortOpen = True Shape1.FillColor = vbGreen MSComm1.Output = sj End If Else MsgBox (格式不對(duì)!) End IfEnd Sub字符串表示的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)化為相應(yīng)的字節(jié)串,返回轉(zhuǎn)化后的字節(jié)數(shù)Private Sub OpenPort

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論