<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 論利用OOP設(shè)計(jì)思想的通訊接口類(lèi)的設(shè)計(jì)與應(yīng)用

          論利用OOP設(shè)計(jì)思想的通訊接口類(lèi)的設(shè)計(jì)與應(yīng)用

          作者: 時(shí)間:2013-07-31 來(lái)源:網(wǎng)絡(luò) 收藏

            

            2.3 接口類(lèi)用例

            假設(shè),現(xiàn)在有一個(gè)頻譜測(cè)量系統(tǒng),各個(gè)測(cè)量?jī)x器與主控PC 采用了GPIB 進(jìn)行系統(tǒng)的構(gòu)建[10],則使用類(lèi)族如圖2 所示,流程圖如3所示,可以設(shè)計(jì)如下的類(lèi)族偽代碼:

            class COM

            {

            public:

            virtual BOOL Open()=0;

            virtual int Write(BYTE* pBuff,int CountToWrite)=0;

            virtual int Read(BYTE* pBuff,int CountTORead)=0;

            virtual void Close()= 0;

            };

            而派生類(lèi)GPIB 接口的實(shí)現(xiàn),就是將該接口的各個(gè)API進(jìn)行封裝,然后由COM 的接口提供出統(tǒng)一的訪問(wèn)方式。

            在實(shí)現(xiàn)了具體的具體的儀器的類(lèi)的編寫(xiě)后,就可以采用圖3的流程來(lái)完成,下面是C++偽代碼:

            COM *pc = new GPIB(1,0,0);

            Device pDevice = new FreqMeasureInstrumen(t pc);

            i(f TRUE == pDevice->Open())

            {

            開(kāi)始與儀器的交互和測(cè)量數(shù)據(jù)的采集;

            }

            else

            {

            打開(kāi)出錯(cuò),錯(cuò)誤處理;

            }

            測(cè)量完成,關(guān)閉儀器;

            pDevice->Close();

            在這段偽代碼中,首先,定義了一個(gè)通信口的指針,但是所指的對(duì)象是一個(gè)動(dòng)態(tài)產(chǎn)生的GPIB類(lèi)的對(duì)象。然后再定義一個(gè)儀器類(lèi)的指針pDevice,所指的對(duì)象是動(dòng)態(tài)產(chǎn)生的一個(gè)頻譜測(cè)量?jī)x的對(duì)象。然后通過(guò)pDevice,就可以調(diào)用接口完成具體的測(cè)量任務(wù)。

            3 結(jié)語(yǔ)

            基于這樣的面向?qū)ο蟮乃枷朐O(shè)計(jì)出來(lái)的測(cè)控系統(tǒng)的,在某個(gè)銀行終端的模擬測(cè)試中,可以很好地適應(yīng)串口和網(wǎng)口的測(cè)試,代碼思路清晰,非常有利于擴(kuò)展和維護(hù)。

          pid控制相關(guān)文章:pid控制原理


          通信相關(guān)文章:通信原理



          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();