




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 密級:公開基于C+的RS232通信協議模擬終端Analog Terminal For RS232 Communication Protocol Based On C+學 院: 專 業 班 級: 學 號:學 生 姓 名: 指 導 教 師: 2013 年 06 月38 / 44摘 要隨著科技的迅猛發展,通信技術已經成為社會經濟、環境、生活、工作、學習不可缺少的一部分。通信的方式多種多樣,以何種方式實現通信主要取決于通信設備。在工業控制系統和實驗室中,由于串行通信具有實現簡單、使用靈活方便等優點,串行通信是計算機與外部設備進行數據通信時經常使用的方式之一。圍繞串行通信技術,本文主要介
2、紹了串行通信接口RS232標準串口,闡述了RS232串行通信基本原理和CRC校驗,通過VC界面編程實現串行通信。傳輸過程過CRC對數據進行校驗。在研究RS232串行通信原理中,主要介紹了RS232標準協議、串口以與串口通信原理。詳細的分析了幾種主要的通信參數。按照其工作原理與RS232串口的標準協議最終采用串行全雙工的方式實現其通信,本文中的接口使用的是計算機上的USB口。在軟件實現方面,本設計在比較了多種方法之后,最終選擇了基于C+的MFC應用程序。利用 MSComm ActiveX 串行通信控件來實現串行通信。文中詳細地介紹了VC下的Windows平臺先進的 ActiveX 控件技術,即M
3、SComm控件等。最終實現了兩臺PC間的串行通信。串行通信以其成本低、結構簡單等優點被人們廣泛應用。用RS-232協議實現兩臺PC機間的串行通信為以后實現更加復雜的設備間通信奠定了基礎。關鍵詞:RS232標準;串行通信;C+;CRC校驗AbstractWith the rapid development of science and technology, communication technology has become an indispensable part of social economy, environment, living and learning. There are
4、 many kinds of communication modes. The selection of communication mode mainly depends on the communication equipment. In industrial control systems and laboratory, serial communication is widely used in computer and external equipment due to the simple and flexible advantage.Around serial communica
5、tion technology, this paper mainly introduces the serial communication interface - RS232 serial port, and expounds the basic principle of RS232 serial communication and CRC check .It is completed to realize serial communication by VC programming. It can check the data during the process of transmiss
6、ion through the CRC.In the study of RS232 serial communication principle, this design mainly introduces the principle of serial communication, serial port and RS232 protocol,and analyzes communication parameters in detail. Considering RS232 serial port and working principle, this design adopts seria
7、l full-duplex mode to realize communication. In the article, the interface is the USB port on the PC. In the aspect of software realization, after several methods are compared,this design selects the MFC application program which is based on C+ .The design realize the serial communication by using M
8、SComm ActiveX serial communication control. This article introduces the ActiveX control technology-MSComm control. Finally, the design realizes serial communication between two computers.Because of the advantages of low cost and simple structure, serial communication is widely used by people. Realiz
9、ation of serial communication between two PC machines is the foundation of realizing more complex communication.Keywords:RS232 protocol; Serial Communications; C+; CRC Cyclic Redundancy Check目 錄摘 要IAbstractII第1章 緒論11.1 課題的研究意義11.2 研究現狀與發展趨勢21.2.1 RS232串行通信的研究現狀21.2.2 RS232串行通信的發展趨勢21.3 本文主要的研究容2第2章串
10、行通信基本原理42.1 RS232通信協議42.1.1 RS232標準42.1.2 RS232接口42.2 串行通信52.2.1 串行通信基本原理52.2.2 串行通信參數62.2.3 串行通信的分類72.3 串口的調制82.3.1 串口連接82.3.2 串口調試92.4 本章小結10第3章 CRC校驗113.1 CRC校驗原理113.1.1 CRC校驗碼的基本原理113.1.2 CRC校驗碼權的形式123.2 CRC校驗的實現133.3本章小結13第4章 軟件的實現與其測試144.1 開發工具概述144.1.1 Windows編程與MFC144.1.2 串行通信控件MSComm144.2 程
11、序的主要功能154.3 程序運行平臺174.4詳細設計174.4.1 建立工程174.4.2 界面功能實現184.4.3 模塊分析214.4.4 程序測試344.5 本章小結39第5章 結論40參 考 文 獻41致 43第1章 緒論1.1 課題的研究意義在發展如此迅速的信息化時代,隨著計算機的普與和信息技術的發展,形成了對信息的獲取-傳送-處理-利用的完整技術體系,并在此基礎上形成了通信技術,它應用在生產、醫療、教育、生活等多種領域,成為現今社會生存和發展不可或缺的技術。隨著通信技術的不斷創新和發展以與計算機網絡和多微機系統的廣泛應用,USB通信技術的發展如此迅速,盡管如此,然而串口通信技術以
12、其實現簡單、使用靈活方便、數據傳輸可靠等優點并未面臨被淘汰,反而在通信領域中一直都被人們廣泛的應用。它主要被廣泛應用在工業控制生產和實驗室等重要領域。VC+是新一代面向對象的可視化開發工具,作為一個主流的開發平臺一直深受編程愛好者的喜愛,提供了良好的界面設計資源,是當下圖形開發的一個比較重要的技能和手段,Window圖形界面編程就是VC+編程開發的經典展現之一。Windows圖形界面編程下的MFC,全稱是Microsoft Foundation Classes,它是Win32中的應用程序,目前Win32中基于VC+6.0的串口通信程序一般可以用兩種方法實現:一是利用 MSComm Active
13、X 串行通信控件;二是使用Windows API通信函數。其中Windows平臺先進的 ActiveX 技術對串口編程不再需要處理繁瑣的細節。利用自帶的ActiveX控件技術,只要編寫少量的代碼,就能很快的完成通信任務。伴隨著科學技術的不斷創新與現代化生產過程中智能化、自動化程度的不斷提高,越來越多的綜生產過程和工業控制系統需要應用自身的控制平臺與數據采集處理,利用Windows編程技術開發這樣的應用程序時,其中要面臨的最關鍵的問題是與外圍監控設備連接與通信。與外圍監控設備通信實際上是計算機與計算機或計算機與終端機之間的數據傳遞,它可以采用串行通信和并行通信兩種通信方式。由于串行通信方式具有使
14、用線路少、成本低、特別是在遠程傳輸時,避免了很多條線路的特性不一致而被人們廣泛應用。所以現在大量的智能儀器、工控設備、實驗研究設備或數據采集模塊都帶有RS232串行通訊接口,通過相應的通訊協議和串口通訊程序,可以將測試、采集的數據傳輸到上位工控機,以滿足各種形式后續數據處理的要求,同時整個監控系統會根據系統運行情況通過串口向監控設備發送指令,調節設備的運行參數等使得生產過程平穩進行1。所以學習RS232串行通信意義非常重大。1.2 研究現狀與發展趨勢1.2.1 RS232串行通信的研究現狀目前,串行通信在各類領域中都得到了廣泛的應用,同時它還具有較高的性價比和傳輸可靠性等優點。RS-232被定
15、義為一種在低速率串行通信中增加通信距離的單端標準。串行通信中的串口應用始于1960年,然而RS-232的初始版本于1969年才得到認證,認證的版本號為RS-232C,在這之前有RS-232A、RS-232B這兩個版本。RS-232標準主要適用于通信設備,它主要采取不平衡傳輸方法,即所謂的單端通信。近年來,串行技術與連接設備都得到了很大的發展,串口設備在設備電纜、工業控制和軟件應用程序中得到了大量的應用,毫無疑問,串行連接技術仍然是工商業、醫療、教育和實驗室等領域中所應用的廣泛標志。1.2.2 RS232串行通信的發展趨勢RS-232協議自1960年形成,1969年得到認證,一直到如今的廣泛使用
16、,始終隨著各種領域應用需求的不斷變化而穩步發展。未來RS-232串口通信仍將在低成本、設計簡單的產品中繼續發揮著重要作用。低供電電壓和高數據率等都將成為未來發展中新設計的普遍要求。我們堅信RS-232一定會繼續隨著各種外圍設備的不斷發展而提高,同時也將繼續保持通信領域中應用最為廣泛這一地位的。1.3 本文主要的研究容本文主要通過RS232標準串口協議,使用VC+編程語言實現串行通信,最終完成模擬終端的調試與仿真。在設計過程中,我通過查閱大量相關書籍和資料,研究學習了RS232標準協議和VC+編程語言下的MFC界面編程,學習串行通信相關知識,通過編程軟件的仿真完成了基于C+的RS232通信協議的
17、模擬終端。具體工作容如下:了解RS232協議,串口和串行通信原理。分析RS232串行通信的基本原理,并通過串口調試助手調通串口以方便接下來的操作。了解CRC校驗,掌握CRC校驗基本原理與應用。在VC+高級語言中,利用Windows下的MSComm ActiveX控件,實現兩臺計算機間的通信測試與仿真。第2章串行通信基本原理2.1 RS232通信協議2.1.1RS232標準RS-232標準(協議)(ANSI/EIA-232標準)的全稱是EIA-RS-232C標準,其中EIA代表美國電子工業協會,RS代表推薦標準,232是標識號,C代表RS-232的修改次數。RS-232C標準是美國EIA(電子工
18、業聯合會)與BELL等公司一起開發的1969年公布的通信協議。RS232協議一共有兩個通道:一個主通道和一個輔助通道,很多情況下主要使用的是主通道。有25條信號線,盡管有如此多的信號線,但是對于一般雙工通信,僅僅需要其中幾條信號線就可實現數據的傳送,即一條發送線、一條接收線和一條地線。它適合于數據傳輸速率在020000b/s圍的通信,即為每秒50、70、100、150、300、600、1200、2400、4800、9600、19200波特,這個標準對串行通信接口的有關問題都作了明確規定2。由于通信設備廠商都生產與RS-232C制式兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛
19、采用,例如在IBM PC機上的COM1、COM2接口,就是RS-232C接口。它規定連接電纜、機械、電氣特性、信號功能與傳送過程等。同時,由于RS-232標準具有連線簡單、通訊距離長等優點,目前也廣泛應用于微型計算機系統、工控機和大型設備系統中。2.1.2RS232接口RS232標準是按負邏輯定義的,它的“1”電平在515 V之間,“0”電平在515 V之間。RS232接口是標準串行接口,其通訊距離小于15 m,它的傳輸速率小于20 kbs。RS232串行接口屬于個人計算機(PC)與電信應用領域中最為成功的串行數據標準。是目前PC機與通信工業中應用最廣泛的一種串行接口。現在的計算機一般至少有兩
20、個串行口COM1和COM2,新一代的計算機主要以9引腳的D型口接出所有的RS232通信信號與控制線(有的計算機的串口為25引腳)3。在RS232的通訊標準中是以一個25針的接口來定義的,25針的接口在早期的計算機如PC或XT機型上廣泛使用,但在AT機以后的機型上,實際均采用了9針的簡化版接口應用,現在所說的RS-232通訊均默認為9針的接口4?,F在大多數個人計算機幾乎都沒有串口,大多采用USB接口,所以要實現個人計算機與外圍設備進行通信大多采用RS-232轉USB接口。RS-232 9針通訊的接口圖如圖2-1所示 。圖2-1 9針通訊接口2.2 串行通信2.2.1 串行通信基本原理兩個設備之間
21、交換數據的過程我們稱之為通信。從同時傳輸的數據位數來分通信方式可以分為串行通信(Serial)和并行通信(Parrel)。并行通信中所傳送數據的各位同時發送或接收。串行通信中所傳送數據的各位按順序一位一位地發送或接收。兩種基本通信方式如圖2-2所示:嗎計算機或外設2計算機計算機或外設2計算機11GNDGNDGNDGNDa)并行通信 b)串行通信圖2-2 兩種基本的通信方式從上面的圖中可以看到,并行通信成本高,并須使用多條通信線,而串行通信只需使用兩條通信線就可以完成兩個設備間的數據交換,大大降低了通信成本,串行通信又以其串行線間的干擾小得到了廣泛的應用。串行通信大多數用于Windows開發的應
22、用程序與外圍數據源設備之間的數據交換。串行通信是通過串行端口實現的。串行端口的本質功能是作為CPU和串行設備間的編碼轉換器5。當數據從CPU經過串行端口發送出去時,數據格式由字節數據轉換為串行的位(bit)。在接收數據時,數據格式由串行的位(bit)被轉換為字節數據。2.2.2串行通信參數串行通信在數據交換過程中,要對幾個重要的通信參數進行設置,其中包括波特率、數據位、停止位、奇偶校驗位等。(1)波特率所謂波特率就是每秒中傳送的二進制位數,其單位是bps(bits per second),用來描述數據的傳送速率,是衡量串行通信數據傳輸速度快慢的重要指標。國際上對波特率規定了一個標準系列:110
23、bps、300bps、600bps、1200bps、1800bps、2400bps、4800bps、9600bps、14.4Kbps、28.8Kbps、33.6Kbps、56Kbps。例如:9600bps,是指每秒傳送數據9600位,其中包含字符的數位和其它必須的數位。串行接口電路的接收波特率和發送的波特率可以設置,要求接收方的接收波特率必須與發送方的發送波特率是一致的。在串行通信中,通信線上所傳輸的字符數據(代碼)是逐位傳送的,一個字符由若干位組成,所以每秒鐘所傳輸的波特率和字符數(字符速率)是完全不同的。有時也用“位周期”來表示傳輸速率,位周期是波特率的倒數。(2)數據位數據位是衡量通信中
24、實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標準的值是5、7和8位。怎樣決定數據位的取值取決于傳送的信息。數據一般為5-8位,它在起始位的后面,是衡量傳送字符的有效數據位的個數。傳送時先傳送字符的低位,后傳送字符的高位。數據位可以由硬件或軟件設備進行設置,用來滿足設備間數據交換的需要。(3)停止位停止位一般為1、1.5和2位,用來表示單個包的最后一位。停止位不僅僅是表示傳輸的結束,還為計算機提供校正時鐘同步的機會,由于數據是在傳輸線上定時的,并且每個設備都有其自己的時鐘,很可能在通信中要進行數據交換的兩臺設備間出現小小的不同步,停止位的設置就是為了避免其中小小的不同步6。
25、停止位的位數的設置可以由設備的軟件設置,停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率相應地也會越慢。(4)奇偶校驗位在串行通信中奇偶校驗是一種簡單的檢錯方式,奇偶校驗位僅占一位,用于進行奇校驗和偶校驗,同時也可以無校驗位。對于奇校驗和偶校驗,串口會設置校驗位,是數據位后面的一位,用一個值保證傳輸的數據有偶個或者奇個邏輯高位。例如,如果數據是001,那么對于奇校驗,校驗位是0;如果是偶校驗,校驗位是1。這樣使得接收設備能夠知道一個位的狀態,有機會判斷是否有噪聲干擾了通信或者傳輸和接收數據是否發生了不同步。2.2.3 串行通信的分類串行通信又可以分為同步串行通信和異步串行通信兩類。
26、同步通信是一種在發送端發送一個抑制載波的雙邊帶信號,而在接收端恢復載波,再進行檢波的通信方式。是按照軟件識別同步字符來實現數據的發送和接收。它是一種連續串行傳送數據的通信方式,一次通信只傳送一幀信息。信息中含有若干個數據字符。 它們均由數據字符、CRC即同步字符和校驗字符組成。因為恢復的載波與被接收的信號載波同頻同相,故取名為同步通信,也稱抑制載波雙邊帶通信。異步通信數據通常以字符或者字節為單位組成字符幀傳送,字符幀由發送端逐幀發送,通過傳輸線被接收設備逐幀接收7。異步通信通常有兩個非常重要的指標:即字符幀格式和波特率。發送端和接收端可以由各自的時鐘源來控制數據的發送和接收,這兩個時鐘源彼此獨
27、立,互不同步,接收端檢測到傳輸線上發送過來的低電平邏輯0(即字符幀起始位)時,確定發送端已開始發送數據,每當接收端收到字符幀中的停止位時,就知道一幀字符已經發送完畢3。異步通信有自己的的缺點,其缺點是它在通信時的傳輸效率較低。當然它也具有自己獨特的優點,其優點就是它的通信設備簡單、便宜。2.3 串口的調制2.3.1串口連接現在大多數計算機外用接口都是USB口,外用接口很少有串口的,并且現在的個人計算機的串口大多都是簡型的9針串口。所以要想通過串行通信實現與外圍設備數據交換,必須用USB轉RS-232 9針串口轉換線。9芯管腳圖如圖 2-3 所示。圖2-3 9芯管腳圖表 2-1 9針管腳各引腳名
28、稱功能圖九針串口針號縮寫功能說明信號來源1DCD功能說明調制解調器2RXD接收數據調制解調器3TXD發送數據PC4DTR數據終端準備PC5GND信號地6DSR數據設備準備好調制解調器7RTS請求發送PC8CTS請求發送調制解調器9DELL振鈴指示調制解調器目前,市場上使用的串口有9針管腳的還有25針管腳的。在RS-232的通訊標準中是以一個25針的接口來定義的,并且在早期的計算機中,如PC機或XT機型上得到了廣泛地使用,但是在AT機以后的機型上,實際上均采用了9針管腳的簡化版本應用,現在所說的RS-232通訊均默認為9針的接口。圖2-3顯示了9針通訊的接口管腳,9針管腳的串口各引腳名稱、功能和
29、信號來源各不一樣。表 2-1說明九針管腳的串口各引腳的名稱,功能說明和信號源等。由表 2-1 可知要想實現兩臺個人計算機間的數據交換,可以將兩個USB轉RS-232線的接口頭的2、3引腳交叉對接,兩個5腳相接即可,具體接法如圖2-4所示,然后再講兩個USB接頭與兩臺電腦相連。圖2-4 USB轉RS232線的連接圖2.3.2串口調試實現個人計算機與外圍設備間的串行通信必須將個人計算機上的串口調通,驗證一下個人計算機上的串口是否好用。這就需要用到串口調試小助手。首先將一根USB轉RS-232轉換線的2、3引腳短接,然后將帶有“驅動程序”的光盤放入個人計算機中,安裝并運行與自己計算機相匹配的驅動程序
30、,接著將轉換線的USB端插入個人計算機的USB口,即完成了初步的安裝。打開設備管理器,看一下所插入的轉換線占的是哪個串口,因為在接下來調試串口要用到。串口調試助手是一個專門用來調試串口程序的功能軟件,要想測試串口是否可用,應先打開軟件,選擇串口號,打開串口,在發送區輸入容,點擊發送按鈕,若在接收區中有所發送的容,則證明此串口可用。2.4 本章小結本章從原理上介紹了串行通信的基本原理,詳細的闡述了RS232標準協議接口和與串行通信相關的一些知識。介紹了通信參數與串行通信的分類。為下文編寫Windows應用程序實現兩臺PC機進行數據交換提供了基礎。第3章 CRC校驗3.1 CRC校驗原理3.1.1
31、CRC校驗碼的基本原理早期的通信由于受到外界各種因素的干擾,會造成傳輸、接收信號的不準確。這主要是由通信技術不可靠性決定的。這樣不可靠的通信就會帶來“確認信息”的麻煩,造成一些事情的延誤等。為了避免這一弊端,在進行數據交換,通信的過程中,對通信的可靠性檢查就需要校驗,校驗是從數據本身進行檢查,它依靠某種數學上約定的形式進行檢查,校驗的結果是可靠或不可靠,如果可靠就對數據進行處理,如果不可靠,就丟棄重發或者進行修復。如早期一樣目前在通信系統的數據傳輸過程中,由于信道中各種復雜因素的影響,使傳輸的信號受到干擾,造成傳輸過程中誤碼的出現8。接收方為了檢查所接收的數據是否有誤碼,可采用多種檢測方法。差
32、錯控制編碼是目前數據傳輸過程中普遍采用的一種提高數據通信可靠性的方法,而CRC是一種在實際通信中應用很廣泛的差錯控制編碼,具有很強的檢錯能力。CRC(Cyclic Redundancy Check)循環冗余校驗碼是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定,CRC循環冗余校驗碼的基本原理是任意一個由二進制位串組成的代碼都可以和一個系數僅為0和1取值的多項式一一對應9。例如:代碼101011對應的多項式為,而多項式為對應的代碼1100101。CRC校驗碼是在K位信息碼后再拼接R位的校驗碼,整個編碼長度為N位,因此,這種編碼也叫(N,K)碼。CRC校驗碼的生
33、成借助于多項式除法,其余數為校驗字段。其中發送方發出傳輸字段,傳輸字段由兩部分組成的,分別為信息字段和校驗字段10,11。接收方使用一樣的生成碼進行校驗,若接收到的字段或生成碼(二進制除法)如果能夠除盡,則說明在通信過程中,數據交換期間未受到其他因素的干擾,消息收發成功。3.1.2 CRC校驗碼權的形式CRC校驗碼有很多種權的行式,使用哪一種形式是根據通信雙方共同制定的“規則”而定的,其中各種常用權的形式如下所示: (3-1) (3-2) (3-3) (3-4) (3-5)以其中CRC-CCITT形式為例。圖 3-1說明了 CRC 校驗中 CRC 值是如何計算出來的,體現的多項式正是式(3-5
34、)。從把數據移位開始計算,將數據位(從最低的數據位開始)逐位移入反向耦合移位寄存器。當所有數據位都這樣操作后,計算結束。此時,16 位移位寄存器中的容就是 CRC 碼。圖3-1中X 代表 Bit5,X 代表 Bit12,1 是代表 Bit0,比較特別,是指移位寄存器移入的數據。圖3-1 生成CRC-CCITT的移位寄存器的作用原理3.2 CRC校驗的實現實現CRC校驗有很多種算法和方式,最基本的算法應該是按位計算了,這個方法可以適用于所有長度的數據校驗,是最為靈活的,但由于是按位計算,其效率并不是最迅速、最優的,只適用于對速度不敏感的場合。還有一種是按照字節計算CRC校驗碼,按字節校驗是每次計
35、算8位數據,多是基于查表的算法,首先要準備一個表,一共256項。在使用的時候,把計算出來的校驗值放在最后兩個字節里,將其發送出去,接收端對所有的數據進行一樣的校驗,如校驗值為0我們則認為其數據沒有出錯。這個是按高位到低位的發送順序時使用的校驗方法。3.3本章小結本章介紹了通信中最常使用的校驗方法,即CRC校驗。分析了CRC校驗原理、算法形式和算法的實現。并通過CRC校驗實現通信中的檢錯。第4章 軟件的實現與其測試4.1 開發工具概述4.1.1Windows編程與MFCWindows編程大致有兩種方法,一種是Windows C方向,即SDK方向,調用Win 32 API函數,主要是利用C語言來實
36、現軟件的功能與編程;另外一種方法是C+對SDK函數進行包裝,如VC的MFC(微軟基礎類庫),BOB的OWL等12,13。其中使用MFC直接編寫提供大量預先編好的類和支持代碼或使用MFC和向導(Wizards)編寫,用AppWizard來生成Windows應用程序框架。本次軟件程序設計功能的實現主要利用Windows編程中MFC(利用C+語言)。MFC提供了構造Windows應用程序的框架,它不僅為應用程序建立標準的結構,還為其提供了標準的圖形用戶界面如菜單欄、工具欄、狀態欄等,開發人員只需要在此基礎上添加針對特定應用的代碼即可。使用此應用程序框架有很多優點,如其應用程序代碼小,運行速度快,并且
37、此應用程序提供的工具也降低了編碼的難度等。Windows應用程序的框架主要有兩種類型,一種是基于對話框的應用程序框架,另外一種是基于文檔、視圖結構的應用程序框架。平大家所見到的大多數Windows應用程序均屬于這兩種框架。MFC的全稱是Microsoft Foundation Classes。是微軟把Windows API 進行封裝的類庫,該類庫以層次結構組織起來,其中封裝了大部分Windows API函數和Windows控件14。1989年微軟公司成立Application Framework技術團隊,名為AFX小組,用以開發C+面向對象工具給Windows應用程序開發人員使用。啟用MFC編
38、碼可以使Windows程序員能夠利用C+面向對象的思想進行編程,用好的類作為標準,減少代碼的編寫量15。4.1.2串行通信控件MSComm目前,以Windows下的MFC應用程序為主要的框架,常用的基于VC+的串行通信編程一般可以用兩種方法實現:一種是使用Windows API通信函數。雖然在Windows下Win32API提供了使用文件操作方式的函數進行串口操作的方法,但是在編程實現上還是比較復雜。其余一種是利用MSComm ActiveX 串行通信控件。Windows提供的ActiveX控件利用它本身帶的MSComm ActiveX控件,只需要程序員編寫少量的代碼,就能輕松完成任務,這樣就
39、使得對串口編程不再需要處理煩瑣的細節。程序員就不需要花費大量時間去了解API函數,只需要利用MSComm控件就可實現串口通信編程16。所以,本次實現兩臺PC間的通信使用的就是MSComm控件。4.2 程序的主要功能實現兩臺PC機之間的通信的應用程序,主要實現了密碼登陸、參設設置、參數顯示、打開串口、關閉串口、數據發送、數據接收、CRC校驗等功能。主要功能框圖如圖4-1所示。主函數CRC校驗十六進制顯示密碼登錄參數設置打開串口關閉串口接收數據發送數據圖4-1 主要功能框圖應用程序主要實現的功能如圖4-1所示的主要功能框圖,此應用程序的總體程序流程圖如圖4-2所示。開始調用初始化程序登錄界面登錄驗
40、證是否正確NY主界面選擇串口并打開設置參數Y是否選擇16進制選擇16進制N是否選擇CRC校驗Y選擇CRCN輸入數據并發送數據發送完成NY關閉串口結束圖4-2 程序流程框圖使用此應用程序時,需要有正確的用戶名和密碼才能登錄到此軟件的主界面,登錄到主界面后,要想實現兩臺PC間的通信則需要選擇可用的串口號并且傳輸參數要一致,其中包括波特率、數據位、停止位、奇偶校驗位等,只有設置對的參數才能實現數據交換的功能。在發送接收數據過程中需要打開串口。通信結束后,關閉打開的串口。能夠發送單個或多個數據。能夠接收和顯示多個數據,并且能夠通過CRC校驗檢查接收的數據是否正確。程序流程圖如圖3-2所示。4.3 程序
41、運行平臺在程序設計時,原計劃使用VS2008軟件,但是由于電腦、操作系統等各種原因,就改用VC+ 6.0這個軟件。4.4詳細設計4.4.1 建立工程要實現通信,首先應先建立工程,即新建基于Win32的MFC應用程序。首先打開VC+6.0軟件,建立基于對話框的MFC應用程序。并將這個應用程序命名為通信17,18。然后在將基于對話框選中(如圖4-3),直接下一步即可,最后直到完成。圖4-3 建立基于對話框應用程序過程圖按照如上所示的方法步驟,建立Win32下的MFC應用程序工程,應用程序工程名為“通信”,最后點擊完成按鈕,就會出現MFC應用程序初始界面如圖4-4所示19。圖4-4 應用程序最初界面
42、4.4.2 界面功能實現(1)登錄界面登錄界面的設計除了應用MFC中的控件和工具外,要想實現其用戶名和密碼的驗證功能還利用了數據庫的知識。本次登陸界面使用的數據庫是微軟的Access數據庫。Access數據庫是一個小型的數據庫,使用起來非常的靈活、方便 。對Access數據庫的連接與操作有很多種方法,例如在ASP中建立對Access數據庫的連接、使用Recordset對象操作Access數據庫、使用SQL指令操作數據庫、使用DSN連接Access數據庫等。其中使用DNS連接Access數據庫方法中,在定義DSN的時候,就已經指定好了數據源需要的ODBC驅動程序,也指定好了數據庫文件的實際路徑和
43、名字,我們在程序中,只需要引用預先定義的數據源名DSN即可20,21。首先,啟動Microsoft Office Access,建立Access數據庫,命名為demo01,然后在數據庫中創建一個表,命名為puser,在表puser中輸入序號(userid)、用戶名(username)和密碼(userpwd),將這個數據庫保存。最后為Access數據庫demo01建立數據源,利用ODBC驅動。數據庫和數據源建立完成后,開始用MFC建立登陸界面。數據庫中用戶名和密碼如圖4-5所示。圖4-5 數據庫中用戶名和弱密碼運行應用程序時,若輸入了錯誤的用戶名或密碼,則系統會提示輸入錯誤。若輸入用戶名和密碼正
44、確,即與Access數據庫表login容相一致,點擊登錄按鈕,出現提示正確,點擊確定按鈕應用程序的界面會由登陸界面跳轉到主界面,開始進行數據交換。登陸界面如圖 4-6 所示。圖4-6 登錄界面(2)主界面主界面是整個應用程序的主體,大致可劃分為三部分,有接收區、發送區和設置區。接收區由靜態文本框和編輯框組成;發送區同樣也是由靜態文本框和邊界框組成;設置區由組合框、復選框、按鈕和靜態文本框組成。完整的主界面如圖4-7所示。圖4-7 主界面(3)參數設置界面完成兩臺PC機間的串行通信(數據交換),必須保證兩個串口的通信參數一致,這樣就需要將兩個應用程序的通信參數重新設置,通信參數包括波特率、數據位
45、、停止位、奇偶校驗位等。相應的通信參數設置完成后,點擊確定按鈕,應用程序則會再次跳轉到主界面(數據收發界面),若想取消設置則點擊取消按鈕,參數設置界面關閉,回到主界面。界面的具體情況如圖4-8所示。圖4-8 設置界面4.4.3 模塊分析(1)用戶名密碼登錄模塊在登錄界面下,在編輯框中輸入用戶名和密碼,單擊界面中的登錄按鈕,可以驗證用戶名密碼輸入是否正確,若正確登錄,程序提示“登陸成功,歡迎使用!”,然后登陸界面關閉顯示主界面,若輸入錯誤則程序提示“密碼用戶名錯誤,請重新輸入!”。需要重新輸入和驗證,驗證通過后才可以登錄。實現該功能的程序流程圖如圖4-9所示,實現該功能的程序代碼如下:開始N是否
46、登錄Y輸入獲取信息N點擊退出按鈕密碼用戶名是否一致Y登錄成功,轉到主界面結束圖4-9 用戶名密碼登錄模塊流程圖void CMylogin:OnBnClickedOk()/ TODO: Add your control notification handler code hereOnOK();void CMylogin:OnOK() TODO: Add extra validation hereUpdateData(TRUE); /讀取編輯框容CUserRecordset m_user; /新建的類,是基于CRecordsettryif(m_user.IsOpen()/判斷記錄集是否打開m_us
47、er.Close(); /若打開則將其關閉m_user.m_strFilter.Format(username=%sanduserpwd=%s,m_username,m_userpwd);/用來作為檢索條件,字符串格式化輸出m_user.Open(CRecordset:snapshot,NULL,CRecordset:none);if(m_user.IsEOF()/密碼用戶名不一致()m_user.Close();AfxMessageBox(用戶名、密碼錯誤,請重試!);return;elsem_user.Close();AfxMessageBox(登錄成功,歡迎使用!);CDialog:On
48、OK();catch(CDBException* e)/try.catch是捕捉異常,即先執行try若成功則結束 /若失敗則執行catch捕捉異常并輸出e-ReportError();return;(2)應用程序初始化實現先顯示登陸界面后主界面,利用MFC中的模式對話框在初始化函數中來實現,若串口是打開的則關閉串口,同時串口參數的設置也是在初始化函數中設置實現的。初始化的程序流程圖如圖4-10所示。具體程序代碼如下面所示:開始顯示登陸界面N串口是否打開Y關閉串口設置參數結束圖4-10 初始化流程圖BOOL CMyDlg:OnInitDialog()CDialog:OnInitDialog();
49、 / TODO: Add extra initialization hereCMylogin my;my.DoModal();/顯示登錄界面if(m_cComm.GetPortOpen() /如果發現串口本來是打開的,則關閉串口m_cComm.SetPortOpen(FALSE);m_cComm.SetCommPort(4); /選擇COM4端口m_cComm.SetInputMode(1); /輸入方式為二進制方式m_cComm.SetInBufferSize(1024); /設置輸入緩沖區m_cComm.SetOutBufferSize(512); /設置輸出緩沖區m_cComm.SetS
50、ettings(9600,n,8,1);/波特率,無校驗,數據位,停止位return TRUE; (3)設置、打開和關閉串口功能開始設置串口號打開串口關閉串口結束圖4-11 設置、打開和關閉串口流程圖串行通信是通過串口實現數據交換的,但是PC機上有不止一個串口,需要我們設置進行串行通信端口號,并將串口打開,通信結束后將串口關閉。程序流程圖如圖4-11所示,實現其功能代碼如下:void CMyDlg:OnOpen() if(m_cComm.GetPortOpen()m_cComm.SetPortOpen(FALSE);CMyDlg md1;UpdateData(true);md1.m_comn
51、= m_comn;m_cComm.SetCommPort(m_comn+1); /設置串口號m_cComm.SetInBufferSize(1024); /接收緩沖區m_cComm.SetOutBufferSize(1024);/發送緩沖區m_cComm.SetInputLen(0);/設置當前接收區數據長度為,表示全部讀取m_cComm.SetInputMode(1);/以二進制方式讀寫數據m_cComm.SetRThreshold(1);if(!m_cComm.GetPortOpen()m_cComm.SetPortOpen(TRUE); /打開串口m_cComm.SetRThreshol
52、d(1); /每當接收緩沖區有個字符則接收串口數據m_cComm.SetInputLen(0); /設置當前緩沖區長度m_cComm.GetInput(); /預讀緩沖區以清除殘留數據elseAfxMessageBox(打開端口失敗!,MB_ICONSTOP,0);void CMyDlg:OnClose()/關閉串口m_cComm.SetPortOpen(FALSE);(4)實現數據交換模塊使用MSComm通信控件是MFC中進行串口通訊最簡單的。MSComm通信控件提供了一系列標準通信命令的接口,它可以建立串口連接,可以連接到其他通信設備(如Modem)還可以發送命令、進行數據交換以與以與監視
53、通信中的干擾,從而可以用它創建全雙工 、事件驅動的、高效實用的通信程序22,23。加入MSComm通信控件,實現從緩沖區中讀取數據,同時將數據給接收變量,更新接收區編輯框的容。實現此模塊的程序流程圖如圖4-12所示,其功能代碼如下:開始N接收緩沖區內是否有字符YYN是否以16進制顯示將緩沖區內字符給接收變量將緩沖區內字符以16進制給變量計算接收數據的CRC值更新編輯框內容結束圖4-12 數據交換模塊流程圖代碼如下:void CMyDlg:OnOnComm() / TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;long
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽城管道清淤合同協議
- 電路線路改造合同協議
- 電廠高硫煤采購合同協議
- 獨棟酒吧出售合同協議
- 生鮮水餃售賣合同協議
- 環衛人工勞務合同協議
- 電子門鎖維保合同協議
- 電梯主板買賣合同協議
- 生活驛站轉讓合同協議
- 電子寵物領養合同協議
- 河南省鄭州外國語2024年中考數學四模真題(含答案)
- 四川省內江市內江市第六中學2023-2024學年八年級下學期期中數學試題
- 抖音火花合同電子版獲取教程
- 2024年《關稅法》要點解讀
- 中考語文二輪專題復習:《記敘文復習之人物形象分析》課件
- 中國少數民族傳統體育智慧樹知到期末考試答案章節答案2024年云南體育運動職業技術學院
- 山西省晉中市介休市2023-2024學年下學期期中測試七年級歷史試卷
- 風機性能綜合測試系統的研究與開發的開題報告
- JJG 365-2008電化學氧測定儀
- 期中模擬測試卷(試卷)-2023-2024學年一年級下冊數學人教版
- 《隱形防護網應用技術規程》
評論
0/150
提交評論