国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

探究一種用戶友好的C++串口類設(shè)計(jì)

2018-06-11 09:43王星
科學(xué)與財(cái)富 2018年14期
關(guān)鍵詞:串口通信模塊化

王星

摘要:在信息化社會中,串口通信在安裝與設(shè)計(jì)相關(guān)設(shè)備設(shè)施中均有廣泛性應(yīng)用,文章闡述了一類以ActiveX控件MSComm和MFC Library Regular DLL為基點(diǎn)的C++串口設(shè)計(jì),采用經(jīng)細(xì)致規(guī)劃的函數(shù)接口和消息體制,最大限度的精簡了串口編輯程序。和直接采用MSComm控件相比較,采用該類型串口進(jìn)行編程,能夠有效降低串口編程的難度系數(shù),使用者只有具備基礎(chǔ)的串口知識,能夠順利的書寫出正常運(yùn)作的串口流程。

關(guān)鍵詞:ActiveX控件;MSComm;串口通信;模塊化

C++為當(dāng)下結(jié)構(gòu)最為繁雜,以及功能最為強(qiáng)大的一類windows應(yīng)用程序開發(fā)工具,怎樣有效應(yīng)用C++研發(fā)串行通信程序去達(dá)到工控系統(tǒng)的實(shí)時(shí)通信,是社會各個(gè)領(lǐng)域中關(guān)注的焦點(diǎn),也是行業(yè)領(lǐng)域發(fā)展期間面對的重難點(diǎn)。串口通信自身具備成本低廉、操作過稱簡易、可靠性高、遠(yuǎn)距離傳輸?shù)葍?yōu)勢,應(yīng)用范疇不斷拓展。有效應(yīng)用計(jì)算機(jī)上的串口能為對裝、設(shè)備進(jìn)行參數(shù)規(guī)劃等工作創(chuàng)造諸多便利條件,設(shè)備間數(shù)據(jù)傳導(dǎo)目標(biāo)也順利實(shí)現(xiàn),故此規(guī)劃具備操作串口功能的計(jì)算機(jī)程序使極為普及的編程任務(wù)。

1當(dāng)前Windows操作系統(tǒng)上進(jìn)行串口編程的幾種方法

1.1采用微軟C運(yùn)行時(shí)庫的I/O函數(shù)

在對串口操作過程中,可應(yīng)用_inp、_inpw、_inpd、_outp等函數(shù),上述函數(shù)最大的特征是能夠直接對串口芯片施以相關(guān)操作行為。這就需要編程人員對串口硬件的工作原理與程序有全面性了解[1]。

1.2應(yīng)用Windows API函數(shù)

即應(yīng)用Windows API中的ReadFile、WriteFile、BuildComDCB等函數(shù)進(jìn)行相關(guān)操作。上述函數(shù)應(yīng)用過程具有一定難度,只有在對系統(tǒng)內(nèi)文件有整體認(rèn)識以及設(shè)備管理具有一定深度情況下,才可有效應(yīng)用。

1.3應(yīng)用第三方串口通信類

第三方串口通信類以CSerialPort,cnComm等為主,應(yīng)用制定的語言編寫,并裝包成類(class),內(nèi)部采用調(diào)用Windows API方式,達(dá)到對串口的有效操作。

2 用戶友好的串口DLL和C++串口類規(guī)劃

2.1串口DLL的規(guī)劃

MSComm控件具備運(yùn)行穩(wěn)定可靠屬性,為本文設(shè)計(jì)工作的開展與運(yùn)行提供了堅(jiān)實(shí)基礎(chǔ)。從性質(zhì)上分析,MSComm為一類ActiveX控件,只有在ActiveX容器內(nèi)其才會運(yùn)作,并將效能發(fā)揮出來。對話框是較為典型的ActiveX容器。故此,本文規(guī)劃了一個(gè)對話框類CommCtnr,若將MSComm控件插進(jìn)對話框類CommCtnr內(nèi),Visual C++開發(fā)環(huán)境將會自行取代MSComm控件產(chǎn)生代理類CMSComm,其將CMSComm類的對象設(shè)為對話框類CommCtnr的數(shù)據(jù)成員[2]。

使用者可直接把有關(guān)的.cpp、.h文件以及.rc資源文件拷貝到自己的工程目錄內(nèi),但上述過程運(yùn)行相對復(fù)雜,且耗用大量時(shí)間。更有效的方法是把有關(guān)的文件獨(dú)立編譯為一個(gè)動態(tài)鏈接庫(DLL),用戶只需調(diào)用該動態(tài)鏈接庫,就可順利的進(jìn)行串口操作。MFC能促使兩類動態(tài)鏈接庫運(yùn)轉(zhuǎn):①M(fèi)FC Library Extension DLL;②MFC Library Regular DLL。前者可把整個(gè)C++類設(shè)為DLL的外部接口,以助力于DL過程,但要求用戶需采用C++語言編程,只有在動態(tài)鏈銜接MFC庫時(shí),DLL的效能才會發(fā)揮出來,用戶群規(guī)??赡苡兴鶞p縮,故此本文設(shè)計(jì)期間不采用該種方式。而應(yīng)用MFC Library Regular

DLL方式,其可提供多類編程語言設(shè)計(jì)的客戶程序。因?yàn)槠鋵ν饨绲慕涌谥徽J(rèn)可是C風(fēng)格的函數(shù),故此其與類(class)類型的參數(shù)之間產(chǎn)生互斥效應(yīng)。故此,本文在對每一C風(fēng)格函數(shù)接口規(guī)劃過程中,均需一個(gè)無符號整型的參數(shù)代表串口號,串口號和串口存在一一對應(yīng)關(guān)系,在DLL內(nèi)部串口號有針對的被轉(zhuǎn)型為MSComm串口控件。在提供串口號的情況下,就可實(shí)現(xiàn)對相關(guān)串口進(jìn)行操作,為用戶創(chuàng)造諸多便利條件。

2.2用戶友好的消息的規(guī)劃

消息傳遞為Windows程序之間以及程序內(nèi)部信息互換的主要渠徑,本文應(yīng)用自定義的消息去落實(shí)客戶程序和DLL間的交互任務(wù)。為DLL設(shè)計(jì)了三種消息,MSComm控件若傳送消息,就會立即被轉(zhuǎn)型為者三類消息之一,最后發(fā)送給客戶程序:①接收數(shù)據(jù)消息;②傳送數(shù)據(jù)消息;③硬件控制消息或者是串口錯(cuò)誤[3]。

消息的實(shí)際數(shù)值大小取決于客戶程序,于串口初始化之際,就把消息值傳達(dá)給DLL。那么在后續(xù)運(yùn)轉(zhuǎn)期間,存在相關(guān)的串口事件發(fā)生時(shí),DLL就會把對應(yīng)的消息傳送給給客戶程序。

2.3用戶友好的C++串口類規(guī)劃

客戶程序能夠直接應(yīng)用DLL的導(dǎo)出函數(shù),對串口的程序進(jìn)行編輯,該類函數(shù)屬于C風(fēng)格的函數(shù)。對于C++編程人員而言,本文規(guī)劃了一個(gè)C++串口類Mcomm,其為DLL導(dǎo)出函數(shù)的包裝類,也被稱之為稱為代理類客戶程序經(jīng)由Mcomm操作串口,能夠?qū)++語言面向?qū)ο蟮膬?yōu)勢彰顯出來,和C風(fēng)格接口相比較,該類借口結(jié)構(gòu)更顯簡潔,并且其還能夠自主管理串口資源的獲得與傳導(dǎo)過程,以降低客戶程序的運(yùn)行負(fù)擔(dān),進(jìn)一步提升串口編程的簡易性與快捷性,遵照了簡潔、清晰、易用的設(shè)計(jì)哲學(xué)理念。應(yīng)用Mcomm難度和尋常的C++類幾乎無差異,把mcomm.h文件囊括在項(xiàng)目內(nèi)即可。

3結(jié)束語

本文以ActiveX控件MSComm為基點(diǎn),規(guī)劃了一類串口通信DLL庫,進(jìn)而設(shè)計(jì)了一個(gè)C++串口類,創(chuàng)設(shè)了一類對用戶友好的串口編程渠道,大幅度降低了串口程序編寫難度。此時(shí),程序員只需具備最基礎(chǔ)的串口知識,就可以實(shí)現(xiàn)編程目標(biāo),為非專業(yè)程序員以及程序編寫初學(xué)者提供巨大幫助。在實(shí)踐中,發(fā)現(xiàn)DLL庫內(nèi)編程語言類型眾多,此時(shí)非C/C++程序員也可以應(yīng)用其對串口程序進(jìn)行編輯。

參考文獻(xiàn):

[1] 翁花群, 林元國. 基于Visual C++的數(shù)字圖像處理實(shí)驗(yàn)教學(xué)軟件開發(fā)[J]. 廊坊師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2015, 15(1):24-28.

[2] 丁立波. 基于ARM9和Qt的嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[D]. 南昌大學(xué), 2011,12(14):124-7413.

[3]王尹圣, 曾國強(qiáng), 李強(qiáng),等. 基于C#與C++混編的輕元素X熒光測量軟件[J]. 核電子與探測技術(shù), 2015(4):394-398.

猜你喜歡
串口通信模塊化
模塊化自主水下機(jī)器人開發(fā)與應(yīng)用
基于模塊化控制系統(tǒng)在一體化教學(xué)中的應(yīng)用
模塊化住宅
ACP100模塊化小型堆研發(fā)進(jìn)展
從模塊化中得到的二氧化碳
模塊化VS大型工廠
基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計(jì)
串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于MSP430單片機(jī)的窄帶無線數(shù)據(jù)傳輸模塊的設(shè)計(jì)
南昌县| 西乌珠穆沁旗| 延边| 宁城县| 南丹县| 呼伦贝尔市| 皮山县| 淮阳县| 尖扎县| 锦屏县| 北安市| 闸北区| 九江市| 获嘉县| 苍山县| 滁州市| 陈巴尔虎旗| 罗江县| 托里县| 玉屏| 泸水县| 华容县| 新泰市| 明水县| 太原市| 南郑县| 德兴市| 河东区| 会同县| 永清县| 昂仁县| 尚志市| 甘肃省| 河东区| 林口县| 固始县| 商洛市| 大名县| 左云县| 新河县| 呼玛县|