
摘 要:文章以MFC的CDialog類為中心,加上CSerial類的支持,采用RS-232接口標準,使用MFC進行串口調試助手程序開發,并在程序中提供通信口、波特率、數據位、校驗位和停止位等通信參數的設置。希望能夠對相關工作提供參考。
關鍵詞:串口通信;C++;MFC;RS-232
1 串行通訊協議
如今計算機網絡技術和多微機系統的應用廣泛,計算機通信的重要性越發顯現[1]。計算機通信可以分為并行通信和串行通信。并行通信將數據字節的各位用多條數據線同時傳送,控制簡單,傳輸速度快,但是成本較高。串行通信則將數據字節分成一位一位的形式在一條傳輸線上逐個傳送,成本低,但是控制復雜。串行通信更方便易行,所以應用十分廣泛,文章中的串口通訊采用串行通訊。
在實現計算機通信中,首先需要確定使用什么協議。所謂協議,實際上就是通信雙方彼此都知道、并且遵守的東西。協議包含的信息必須在通信之前送達,協議對于所控制的通信而言是先驗的[3]。作為一種點對點的通信方式,串行通信在數據流向中可分為單工、半雙工和雙工。單工指物理上一方只能向另一方傳送數據;半雙工指物理上雙方可以互傳數據,但是任一時刻只能有一個方向的流。全雙工指在同一時刻,任何一方都可以向另一方發送數據。
較為流行的串行通信協議可分為同步串行協議和異步串行協議[1]。
同步協議中,雙方約定好采樣率后即開始數據的傳輸,數據的協調過程不需要專門的起始信息,但是要建立發送方時鐘對接收方時鐘的直接控制,雙方達到完全同步,線上的每個數據都是有效的。異步協議中,不再要求收發雙方時鐘的完全一致,發送方在任何時刻都可以發送若干比特組成的幀,接收方對數據的到達是無法預測的。幀與幀之間的間隔由發送方控制,可以取任意值[1]。發送端和接收端都以“接收時鐘”和“波特率因子”決定一位的時間長度。以起止式異步傳輸協議為例,每次異步傳輸的信息都以一個起始位開頭,以一個停止位結束。在異步傳輸協議中,只有數據幀而沒有命令幀,且數據幀不分段。由于異步通信實現容易,且設備開銷小,在文章中采用異步通信協議。
2 串行通信接口標準
串行通信接口標準中,應用最為廣泛的是EIA-232、EIA-422和EIA-485,也就是以前所稱的RS-232、RS-422和RS-485,目前在通信工業中應用最廣泛的是EIA-232。
EIA RS-232標準主要定義了串行通信中DTE和DCE的定義、接口的模擬數字特性、接口的機械特性、子電路的結構和接口、用于調制傳輸的電路接口[4]。作為標準,其每一個細節必須嚴格實現,否則整個標準所實現的目標就不能夠達到。在追求穩定的工業界,RS-232標準仍然有大量應用。
在電氣特性上,負電平代表邏輯1,正電平代表邏輯0。控制信號和邏輯信號的正負電平允許范圍相同,信號線端口的電氣特性應與等效電路的電氣特性相同。在信號線定義上,簡化的9信號連接中只有保護地線、主異步串行傳輸控制線以及部分調制解調器狀態控制信號。深度簡化的信號連接也就是三線連接法,只保留了主異步串行傳輸控制線組的TxD和RxD以及信號底線。
3 程序實現
基于Windows API和C++的串口類CSerial類是一種較優秀的類封裝,而MFC是一種應用框架,提供一組通用的可重用的類庫供開發人員使用。其對原始API的封裝給程序設計帶來了方便,但也造成了冗余和復雜。
文章以MFC的CDialog類為中心,加上CSerial類的支持,使用MFC進行串口調試助手程序的編寫。程序主流程圖如圖1所示。
程序調試中,將兩計算機用RS-232將COM口互聯,均使用COM1,在波特率為9600、數據總共八位、不帶校驗位和一位停止位的情況下的串口通信結果如圖2所示。
4 結束語
RS-232是PC機與通信工業中應用最廣泛的一種串行接口,特別是本地設備中的通信,文章主要依托CSerial類的支持,利用MFC進行了串口調試助手程序開發,在程序中提供了波特率、通信口、數據位、校驗位和停止位等通信參數的設置,并經實際調試,運行良好。
參考文獻
[1]趙曉輝,陳艷萍,張科英,等.基于VC++環境下串口通信程序的研究與實現[J].科技信息,2010,1:39-40+78.
[2]王正強.VC中應用MSComm控件實現串口通信[J].電子測試,2010,5:73-76.
[3]王坤,高 .基于VC++實現串口通信的方法[J].信息化研究,2010,10:52-54.
[4]汪瀅,孫華軍.基于VC++串口通信的設計與實現[J].現代電子技術,2011,14:19-20+24.
作者簡介:方雨純(1990-),女,江蘇南京人,碩士學位,從事通信方向的研究。