王星
摘要:在信息化社會中,串口通信在安裝與設計相關設備設施中均有廣泛性應用,文章闡述了一類以ActiveX控件MSComm和MFC Library Regular DLL為基點的C++串口設計,采用經細致規劃的函數接口和消息體制,最大限度的精簡了串口編輯程序。和直接采用MSComm控件相比較,采用該類型串口進行編程,能夠有效降低串口編程的難度系數,使用者只有具備基礎的串口知識,能夠順利的書寫出正常運作的串口流程。
關鍵詞:ActiveX控件;MSComm;串口通信;模塊化
C++為當下結構最為繁雜,以及功能最為強大的一類windows應用程序開發工具,怎樣有效應用C++研發串行通信程序去達到工控系統的實時通信,是社會各個領域中關注的焦點,也是行業領域發展期間面對的重難點。串口通信自身具備成本低廉、操作過稱簡易、可靠性高、遠距離傳輸等優勢,應用范疇不斷拓展。有效應用計算機上的串口能為對裝、設備進行參數規劃等工作創造諸多便利條件,設備間數據傳導目標也順利實現,故此規劃具備操作串口功能的計算機程序使極為普及的編程任務。
1當前Windows操作系統上進行串口編程的幾種方法
1.1采用微軟C運行時庫的I/O函數
在對串口操作過程中,可應用_inp、_inpw、_inpd、_outp等函數,上述函數最大的特征是能夠直接對串口芯片施以相關操作行為。這就需要編程人員對串口硬件的工作原理與程序有全面性了解[1]。
1.2應用Windows API函數
即應用Windows API中的ReadFile、WriteFile、BuildComDCB等函數進行相關操作。上述函數應用過程具有一定難度,只有在對系統內文件有整體認識以及設備管理具有一定深度情況下,才可有效應用。
1.3應用第三方串口通信類
第三方串口通信類以CSerialPort,cnComm等為主,應用制定的語言編寫,并裝包成類(class),內部采用調用Windows API方式,達到對串口的有效操作。
2 用戶友好的串口DLL和C++串口類規劃
2.1串口DLL的規劃
MSComm控件具備運行穩定可靠屬性,為本文設計工作的開展與運行提供了堅實基礎。從性質上分析,MSComm為一類ActiveX控件,只有在ActiveX容器內其才會運作,并將效能發揮出來。對話框是較為典型的ActiveX容器。故此,本文規劃了一個對話框類CommCtnr,若將MSComm控件插進對話框類CommCtnr內,Visual C++開發環境將會自行取代MSComm控件產生代理類CMSComm,其將CMSComm類的對象設為對話框類CommCtnr的數據成員[2]。
使用者可直接把有關的.cpp、.h文件以及.rc資源文件拷貝到自己的工程目錄內,但上述過程運行相對復雜,且耗用大量時間。更有效的方法是把有關的文件獨立編譯為一個動態鏈接庫(DLL),用戶只需調用該動態鏈接庫,就可順利的進行串口操作。MFC能促使兩類動態鏈接庫運轉:①MFC Library Extension DLL;②MFC Library Regular DLL。前者可把整個C++類設為DLL的外部接口,以助力于DL過程,但要求用戶需采用C++語言編程,只有在動態鏈銜接MFC庫時,DLL的效能才會發揮出來,用戶群規模可能有所減縮,故此本文設計期間不采用該種方式。而應用MFC Library Regular
DLL方式,其可提供多類編程語言設計的客戶程序。因為其對外界的接口只認可是C風格的函數,故此其與類(class)類型的參數之間產生互斥效應。故此,本文在對每一C風格函數接口規劃過程中,均需一個無符號整型的參數代表串口號,串口號和串口存在一一對應關系,在DLL內部串口號有針對的被轉型為MSComm串口控件。在提供串口號的情況下,就可實現對相關串口進行操作,為用戶創造諸多便利條件。
2.2用戶友好的消息的規劃
消息傳遞為Windows程序之間以及程序內部信息互換的主要渠徑,本文應用自定義的消息去落實客戶程序和DLL間的交互任務。為DLL設計了三種消息,MSComm控件若傳送消息,就會立即被轉型為者三類消息之一,最后發送給客戶程序:①接收數據消息;②傳送數據消息;③硬件控制消息或者是串口錯誤[3]。
消息的實際數值大小取決于客戶程序,于串口初始化之際,就把消息值傳達給DLL。那么在后續運轉期間,存在相關的串口事件發生時,DLL就會把對應的消息傳送給給客戶程序。
2.3用戶友好的C++串口類規劃
客戶程序能夠直接應用DLL的導出函數,對串口的程序進行編輯,該類函數屬于C風格的函數。對于C++編程人員而言,本文規劃了一個C++串口類Mcomm,其為DLL導出函數的包裝類,也被稱之為稱為代理類客戶程序經由Mcomm操作串口,能夠將C++語言面向對象的優勢彰顯出來,和C風格接口相比較,該類借口結構更顯簡潔,并且其還能夠自主管理串口資源的獲得與傳導過程,以降低客戶程序的運行負擔,進一步提升串口編程的簡易性與快捷性,遵照了簡潔、清晰、易用的設計哲學理念。應用Mcomm難度和尋常的C++類幾乎無差異,把mcomm.h文件囊括在項目內即可。
3結束語
本文以ActiveX控件MSComm為基點,規劃了一類串口通信DLL庫,進而設計了一個C++串口類,創設了一類對用戶友好的串口編程渠道,大幅度降低了串口程序編寫難度。此時,程序員只需具備最基礎的串口知識,就可以實現編程目標,為非專業程序員以及程序編寫初學者提供巨大幫助。在實踐中,發現DLL庫內編程語言類型眾多,此時非C/C++程序員也可以應用其對串口程序進行編輯。
參考文獻:
[1] 翁花群, 林元國. 基于Visual C++的數字圖像處理實驗教學軟件開發[J]. 廊坊師范學院學報(自然科學版), 2015, 15(1):24-28.
[2] 丁立波. 基于ARM9和Qt的嵌入式視頻監控系統的設計[D]. 南昌大學, 2011,12(14):124-7413.
[3]王尹圣, 曾國強, 李強,等. 基于C#與C++混編的輕元素X熒光測量軟件[J]. 核電子與探測技術, 2015(4):394-398.