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