夏玉潔
【摘要】 隨著現代信息技術的發展以及計算機網絡的廣泛應用,計算機通信技術以及日趨成熟,串口通信是一種靈活方便可靠的通信方式。本文通過VC++軟件的MSComm控件編程來控制PC與PC串口之間的數據傳輸加以說明,采用虛擬串口的方式在一臺PC機上的不同串口之間傳輸數據。
【關鍵詞】 串行通信 MSComm控件 多線程 虛擬串口 VC++
一、引言
串行端口的本質功能是作為CPU和串行設備間的編碼轉換器。當數據從CPU經過串行端口發送出去時,字節數據轉換成串行的位。接收數據時,串行的位轉換為字節數據。串行技術應用廣泛,如遠程監控,工業自動化和軟件通信等多個領域。
二、串口通信的原理分析
2.1 基于WINDOWS的VC++串行通信編程
利用VC++編制串行通信程序有三種方法:
一是采用Win32應用程序編程接口(API)所提供的串口通信函數,用SDK思路編寫;
二是用ActiveX通信工件MSComm開發串行通信程序;
三是采用C++的MFC思路,將Win32串口通信的API函數封裝在一個類中實現通信。
2.2串行接口標準
串行通信線路連接數,要解決兩個問題:
一是計算機與外設之間的物理接口標準,屬于OSI中的物理層,包括RS-232、RS-422及RS-485標準等。
二是按接口標準設置計算機與外設之間串行通信的接口電路。
三、串口通信整體設計方案
3.1 面向對象的思想
面向對象的思想是把信息系統本身看作是一系列離散的對象的集合,這些對象包括數據結構,及數據結構的操作或行為。若對象之間由事件觸發,引起互通消息實現互操作,設計出的軟件是模塊化的,可擴充和可移植的。
面向對象的程序設計以“對象”和“數據結構為中心,用“對象”表現事物,用“類”表示對象的抽象,用“消息傳遞”表現事物的相互聯系,少用“方法”表現處理事物的過程。
3.2 VC下的32位串口應用程序
Windows32位下的串口應用程序用3種方法實現: MSComm控件;用API通信函數或者CSerialPort類。
3.2.1使用MSComm控件方法
VC++6.0提供的MSComm控件通過串口端口發送和接收數據,為程序提供串口通信功能。在當前對話框中插入MSComm控件,然后在ClassWizard中為創建的通信控件定義一個成員對象(CMSComm m_Com),通過該成員對象即可設置MSComm控件屬性。
MSComm控件需要設置常用屬性,即初始化串口,打開串口,讀寫串口。
3.2.2使用32位的API通信函數
在VC++6.0下,MFC應用程序線程用CWinThread對象表示。VC++把線程分成兩種:用戶界面線程和工作者線程。用戶界面線程提供界面和用戶交互,用于處理用戶輸入及其相應的各種事件和消息,工作線程處理程序的后臺任務。在MainFrm.cpp中定義全局變量,然后在程序中創建一個串口,進行相應的串口參數設置,啟動一個工作者線程,用來監視串口狀態,看有無數據到達、通信有無錯誤;用戶界面線程可專心進行數據處理、提供友好的用戶界面,最后為工作者線程編寫一個全局函數,主要完成數據接收工作。
3.3 圖像傳輸設計方案
利用MATLAB軟件將一幅圖像轉換成矩陣,然后用串口輸出,從COM1輸入圖像矩陣并發送,在COM2端可以接受到該圖像矩陣,通過MATLAB還原可以得到原圖像。用虛擬串口軟件VSPD模擬串口,同時添加一對虛擬串口是設定通過非MODE(三線制)串口連接線連接在一起的,像兩個真實的物理串口可以進行通信,可節約成本,提高連接的可靠性。
四、結束語
實驗表明,通過MSComm控件通過串口端口可以實現發送和接收圖像數據,在傳輸過程中可實時進行更新顯示,圖像傳輸后將其保存為BMP格式文件,可以進行后續處理使用。
參 考 文 獻
[1]李長林 高潔,Visual C++串口通信技術與典型實例,清華大學出版社,ISBN 7-302-12903-7,2006-05-01.
[2]陳淑珍,石波.基于Windows多線程環境下的串口通信[J].計算機工程與設計,2000-3.
[3]田敏 鄭瑤 李江全.Visual C++數據采集與串口通信測控應用實踐,人民郵電出版社.ISBN978-7-115-22611-2,2010-6.
[4]李現勇,Visual C++串口通信技術與工程實踐(第二版).人民郵電出版社.ISBN7-115-12344-6/TP.4021,2004-7