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

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 遠(yuǎn)程抄表系統(tǒng)中集中器軟件的模塊化設(shè)計(jì)與實(shí)現(xiàn)

          遠(yuǎn)程抄表系統(tǒng)中集中器軟件的模塊化設(shè)計(jì)與實(shí)現(xiàn)

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


          定時(shí)抄表模塊使用單獨(dú)線程,在模塊中判斷當(dāng)前時(shí)間是否符合抄表設(shè)定的時(shí)間,如果是則將所有要抄讀信息發(fā)送到下行協(xié)議模塊封裝模塊進(jìn)行封裝抄表命令,然后下發(fā)出去。在向下通信的過(guò)程中使用了兩個(gè)隊(duì)列來(lái)通信和處理的異步性,在對(duì)多個(gè)表抄讀時(shí)可提高整體的效率。

          3 通信
          模擬在Linux操作中用C++語(yǔ)言實(shí)現(xiàn),每個(gè)模塊封裝成單獨(dú)的類(lèi),如下所示:

          該類(lèi)對(duì)應(yīng)主控模塊,其中成員函數(shù)run()中實(shí)現(xiàn)主控模塊的功能,在系統(tǒng)中構(gòu)造一個(gè)全局的Dispatcher對(duì)象以實(shí)現(xiàn)對(duì)主控模塊的訪問(wèn)。

          該類(lèi)對(duì)應(yīng)上行協(xié)議的幀,其中提供成員方法Encode()和Decode()來(lái)實(shí)現(xiàn)對(duì)上行協(xié)議的封裝和解析。在程序中只需創(chuàng)建一個(gè)幀的對(duì)象就可以通過(guò)這些函數(shù)實(shí)現(xiàn)封裝和解析的功能。下行協(xié)議采用同樣的方法處理:

          該類(lèi)對(duì)應(yīng)器操作模塊,其中方法Do(int Op_Type)實(shí)現(xiàn)具體操作功能,參數(shù)Op_Type表示要做的具體操作,在函數(shù)內(nèi)部可以使用switch-case語(yǔ)句判斷操作的類(lèi)型,然后到各個(gè)分支執(zhí)行。
          其余模塊采用相同的方法進(jìn)行封裝,需要注意的是抄表模塊和下行通信模塊采用單獨(dú)線程處理,以實(shí)現(xiàn)抄表任務(wù)的定時(shí)啟動(dòng)和下行數(shù)據(jù)傳輸?shù)漠惒叫浴O滦嘘?duì)列采取封裝STL中queue模板來(lái)實(shí)現(xiàn),并提供入隊(duì),出對(duì),獲取隊(duì)列大小等接口。

          4 結(jié)語(yǔ)
          的主要任務(wù)是實(shí)現(xiàn)其的各部分功能。主要功能包括:器控制、實(shí)時(shí)用電數(shù)據(jù)采集、定時(shí)數(shù)據(jù)采集及存儲(chǔ)、數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)、運(yùn)行狀態(tài)記錄及指示、通信管理等。采用了的通信軟件具有穩(wěn)定性好,效率高等特點(diǎn),能夠進(jìn)一步加快電力行業(yè)自動(dòng)化的建設(shè)。


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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(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); })();