《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于DCOM的分布式信號(hào)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

基于DCOM的分布式信號(hào)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2009-08-06
作者:李劍鋒1, 王緒本1, 呂澤均2

  摘? 要: DCOM技術(shù)在信號(hào)采集處理系統(tǒng)中的應(yīng)用實(shí)例,描述了該系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方案。

  關(guān)鍵詞: DCOM技術(shù)? 分布式系統(tǒng)? 信號(hào)采集處理

?

  隨著Internet的不斷發(fā)展,系統(tǒng)網(wǎng)絡(luò)化和開放性成為系統(tǒng)發(fā)展的主流,以往單一、獨(dú)立的信號(hào)采集處理系統(tǒng)已經(jīng)不能適應(yīng)新的形勢。用戶希望能通過Internet/Intranet進(jìn)行遠(yuǎn)距離的信息采集與處理,并且需要能夠支持處于不同主機(jī)上的多個(gè)信號(hào)采集端與多個(gè)信號(hào)處理端的協(xié)同工作。建立分布式信號(hào)采集處理系統(tǒng)是解決上述問題的有效途徑。

  分布式組件對(duì)象模型(DCOM)是微軟公司推出的一個(gè)分布式計(jì)算標(biāo)準(zhǔn),已經(jīng)成為開發(fā)分布式系統(tǒng)和多層應(yīng)用的主流技術(shù)之一。因此,充分利用微軟的平臺(tái)優(yōu)勢,建立基于DCOM的分布式信號(hào)采集處理系統(tǒng),在技術(shù)上具有可靠的保證。本文將介紹一個(gè)基于該思想的應(yīng)用實(shí)例的設(shè)計(jì)與實(shí)現(xiàn)方法。

1? COM、DCOM技術(shù)簡介

  組件對(duì)象模型COM(Component Object Model)是微軟公司提出的一種二進(jìn)制軟件交互規(guī)范,提供平臺(tái)無關(guān)的、面向?qū)ο蟮耐ㄐ艆f(xié)議。COM使用面向?qū)ο蟮木幊虣C(jī)制,組件之間具有極松馳的耦合性,可以實(shí)現(xiàn)穩(wěn)定的版本轉(zhuǎn)變,使應(yīng)用程序能更好地?cái)U(kuò)充和復(fù)用。此外COM還具有位置無關(guān)性和語言無關(guān)性的特點(diǎn)。

  分布式組件對(duì)象模型DCOM(Distributed COM)是對(duì)COM模型的分布式擴(kuò)展,使其能夠支持局域網(wǎng)、廣域網(wǎng)甚至Internet中不同計(jì)算機(jī)上的COM對(duì)象間的通信,實(shí)現(xiàn)應(yīng)用程序在位置上的分布。DCOM是跨平臺(tái)的互操作性標(biāo)準(zhǔn),具有組件位置獨(dú)立性、平臺(tái)獨(dú)立性、協(xié)議獨(dú)立性、安全性、可配置性等特點(diǎn)。

2? 分布式信號(hào)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)功能描述

  分布式信號(hào)采集處理系統(tǒng)是一個(gè)既可運(yùn)行于網(wǎng)絡(luò),也可運(yùn)行于單機(jī)環(huán)境下的開放式信號(hào)采集與信號(hào)處理綜合系統(tǒng)。它完全基于網(wǎng)絡(luò)的概念,利用COM及DCOM的強(qiáng)大優(yōu)勢,將下層信號(hào)采集的功能進(jìn)行封裝,以COM服務(wù)的形式透明地提供給網(wǎng)絡(luò)內(nèi)的上層應(yīng)用,保持了平臺(tái)的透明性,支持真正的客戶-服務(wù)器模式和分布式軟件結(jié)構(gòu)。系統(tǒng)使用開放的網(wǎng)絡(luò)結(jié)構(gòu)架構(gòu),可以支持多個(gè)信號(hào)采集子系統(tǒng)和多個(gè)信號(hào)處理子系統(tǒng)。這些子系統(tǒng)完全透明地運(yùn)行于網(wǎng)絡(luò)內(nèi)不同的節(jié)點(diǎn)中。系統(tǒng)實(shí)時(shí)地與這些子系統(tǒng)通信,實(shí)現(xiàn)動(dòng)態(tài)的管理與配置。系統(tǒng)允許用戶進(jìn)行功能擴(kuò)展和發(fā)揮,為不同用戶對(duì)象的二次開發(fā)提供了極大的靈活性,從而滿足企業(yè)內(nèi)部對(duì)系統(tǒng)伸縮性和可擴(kuò)展性的要求。

2.2 系統(tǒng)組成

  該系統(tǒng)主要由下面三大子系統(tǒng)組成。

  (1)信號(hào)采集子系統(tǒng)。該系統(tǒng)負(fù)責(zé)管理連接于本主機(jī)上的所有A/D采集卡,同時(shí)實(shí)現(xiàn)對(duì)采集功能的控制及數(shù)據(jù)的采集與傳送功能。它封裝對(duì)數(shù)據(jù)采集卡的底層訪問,向上提供一致的訪問接口,與上層信號(hào)處理系統(tǒng)和代理服務(wù)器系統(tǒng)進(jìn)行通信。一方面它要查詢本地機(jī)器上所擁有的采集卡設(shè)備的數(shù)量及其狀況,向代理服務(wù)器系統(tǒng)進(jìn)行設(shè)備的注冊(cè)和注銷,同時(shí)要接收來自信號(hào)處理系統(tǒng)對(duì)指定采集設(shè)備的操作指令,將結(jié)果返回給信號(hào)處理系統(tǒng)。一個(gè)信號(hào)采集子系統(tǒng)可以管理本地機(jī)器上的多個(gè)采集卡設(shè)備。

  (2)信號(hào)處理子系統(tǒng)。該子系統(tǒng)采用多線程并行處理機(jī)制實(shí)現(xiàn)數(shù)字信號(hào)處理及與用戶進(jìn)行交互的功能。它接收用戶的操作并將指令發(fā)往相應(yīng)的信號(hào)采集子系統(tǒng),根據(jù)系統(tǒng)設(shè)置或用戶操作對(duì)信號(hào)采集子系統(tǒng)發(fā)回的各種數(shù)據(jù),進(jìn)行各種時(shí)域或頻域的數(shù)字信號(hào)處理與顯示。

  (3)代理服務(wù)器子系統(tǒng)。該系統(tǒng)主要負(fù)責(zé)整個(gè)系統(tǒng)內(nèi)所有信號(hào)采集子系統(tǒng)與信號(hào)處理子系統(tǒng)的注冊(cè)、注銷及其連接分配。所有啟動(dòng)的信號(hào)采集子系統(tǒng)和信號(hào)處理子系統(tǒng)都必須先在該系統(tǒng)上進(jìn)行注冊(cè),然后根據(jù)系統(tǒng)所使用的某種連接分配策略,對(duì)注冊(cè)在其上的信號(hào)采集子系統(tǒng)和信號(hào)處理子系統(tǒng)進(jìn)行連接。只有通過本子系統(tǒng)相互連接以后的信號(hào)采集子系統(tǒng)和信號(hào)處理子系統(tǒng)才可以相互使用。該系統(tǒng)提供3種連接分配策略:自動(dòng)均衡連接、根據(jù)配置文件連接和手工連接。

整個(gè)信號(hào)采集處理系統(tǒng)由分布在網(wǎng)絡(luò)中的多個(gè)信號(hào)采集子系統(tǒng)、多個(gè)信號(hào)處理子系統(tǒng)和一個(gè)代理服務(wù)器子系統(tǒng)組成。系統(tǒng)結(jié)構(gòu)如圖1所示。

?

  這些子系統(tǒng)透明地分布于網(wǎng)絡(luò)中的不同主機(jī)上。同一個(gè)主機(jī)上可以單獨(dú)運(yùn)行也可以同時(shí)運(yùn)行信號(hào)采集子系統(tǒng)和信號(hào)處理子系統(tǒng)。每個(gè)信號(hào)采集子系統(tǒng)或信號(hào)處理子系統(tǒng)啟動(dòng)時(shí)都會(huì)自動(dòng)向代理服務(wù)器注冊(cè),退出時(shí)也會(huì)進(jìn)行自動(dòng)注銷。代理服務(wù)器對(duì)注冊(cè)在其上的子系統(tǒng)進(jìn)行分配連接。一個(gè)信號(hào)處理子系統(tǒng)可以要求同時(shí)連接上多個(gè)信號(hào)采集子系統(tǒng),一個(gè)信號(hào)采集子系統(tǒng)也可以被多個(gè)信號(hào)處理子系統(tǒng)所連接。經(jīng)過代理服務(wù)器連接以后的信號(hào)采集子系統(tǒng)和信號(hào)處理子系統(tǒng)可以直接通信。代理服務(wù)器只負(fù)責(zé)它們的注冊(cè)、注銷和連接工作,不再參與它們的數(shù)據(jù)傳輸。這使代理服務(wù)器的工作負(fù)荷減輕,也提高了系統(tǒng)的效率。

2.3 接口設(shè)計(jì)及系統(tǒng)實(shí)現(xiàn)

  系統(tǒng)的開發(fā)工具為VC++6.0,充分利用COM、DCOM的強(qiáng)大優(yōu)勢,提供各子系統(tǒng)相互透明訪問的功能。針對(duì)系統(tǒng)三大子系統(tǒng)的功能,基于VC++6.0的ATL和MFC開發(fā)環(huán)境創(chuàng)建如下3個(gè)項(xiàng)目,分別實(shí)現(xiàn)三大系統(tǒng)的設(shè)計(jì)功能:

(1)CollectionServer項(xiàng)目。該項(xiàng)目使用ATL技術(shù)開發(fā),以Windows服務(wù)的形式實(shí)現(xiàn)了信號(hào)采集子系統(tǒng)的所有功能,它以后臺(tái)服務(wù)進(jìn)程的方式運(yùn)行,不提供用戶界面。

本項(xiàng)目在IDL語言中定義如下的COM組件:

  coclass DataTransmit

  {

????????????? [default] interface IDataTransmit;

????????????? [source] interface IReceiveData;

  };

  該組件主要實(shí)現(xiàn)IDataTransmit接口,以封裝對(duì)A/D采集卡的直接訪問功能。IDataTransmit接口只提供ReadData()和ADCommand()二個(gè)方法,向上層信號(hào)處理系統(tǒng)提供統(tǒng)一、簡單、方便的調(diào)用方法,同時(shí)也便于指令的擴(kuò)展和更改。信號(hào)處理系統(tǒng)調(diào)用ReadData()方法讀取指定的A/D采集卡采集的數(shù)據(jù),而ADCommand()方法則用于信號(hào)處理系統(tǒng)向A/D采集卡發(fā)送指令來設(shè)置采集參數(shù)、啟動(dòng)和停止采集等。IReceiveData接口是一個(gè)源接口,在信號(hào)處理子系統(tǒng)ColleMonitor項(xiàng)目中實(shí)現(xiàn),用于本信號(hào)采集子系統(tǒng)向信號(hào)處理子系統(tǒng)發(fā)送已采集到數(shù)據(jù)的事件通知。

  (2)ColleMonitor項(xiàng)目。該項(xiàng)目使用MFC框架開發(fā),實(shí)現(xiàn)信號(hào)處理子系統(tǒng)的功能。在此項(xiàng)目中主要實(shí)現(xiàn)了IReceiveData接口,此接口是一個(gè)事件接口,提供3個(gè)事件:DeviceConnectEvent()、DeviceDisconnectionEvent()、DeviceAcqFinishedEvent()。當(dāng)代理服務(wù)器子系統(tǒng)將某個(gè)信號(hào)采集子系統(tǒng)中的某個(gè)A/D設(shè)備連接到本信號(hào)處理子系統(tǒng)時(shí),調(diào)用DeviceConnectEvent()方法通知本系統(tǒng),并且將信號(hào)采集子系統(tǒng)的IDataTransmit接口指針和設(shè)備標(biāo)識(shí)號(hào)作為參數(shù)傳給本系統(tǒng)。本系統(tǒng)獲得這二個(gè)參數(shù)后即可通過接口直接對(duì)設(shè)備進(jìn)行訪問。同樣,當(dāng)某個(gè)設(shè)備已被取消連接或注銷時(shí),代理服務(wù)器子系統(tǒng)也會(huì)調(diào)用DeviceDisconnectionEvent()方法,以通知本系統(tǒng)此設(shè)備不可再用;事件DeviceAcqFinishedEvent()則是當(dāng)某個(gè)設(shè)備完成采集任務(wù)時(shí),由相應(yīng)的信號(hào)采集子系統(tǒng)觸發(fā),通知本系統(tǒng)可以調(diào)用相應(yīng)的IDataTransmit接口讀取數(shù)據(jù)。

  (3)ColleBroker項(xiàng)目。該項(xiàng)目使用ATL/WTL技術(shù)開發(fā)實(shí)現(xiàn)代理服務(wù)器的功能。它提供一個(gè)簡單的窗口,顯示已經(jīng)注冊(cè)的A/D采集卡設(shè)備和信號(hào)處理子系統(tǒng)及它們之間的連接狀況,允許用戶進(jìn)行連接管理和連接設(shè)置。該項(xiàng)目是一個(gè)可遠(yuǎn)程激活的DCOM服務(wù)程序,COM組件定義為coclass ColleBrokerObj。

  {

????????????? [default] interface IRegisterSubSystem;

  };

  IRegisterSubSystem接口實(shí)現(xiàn)下列4個(gè)方法:

 ?、賀egisteConllectionDevice([in] long hDeviceHandle,[in] BSTR strCardSerial,[in] BSTR strComputer,[in] int DeviceType,[in] IDataTransmit*lpConllection);

 ?、赨nRegisteConllectionDevice([in] long hDeviceHandle);

 ?、跼egisteMonitor([in] BSTR strIpAdress,[in] BSTR strComputer,[in] IReceiveData*lpConllection);

  ④UnRegisteMonitor([in] BSTR strComputer)。

  其中:RegisteConllectionDevice()和UnRegisteConllectionDevice()方法由信號(hào)采集子系統(tǒng)調(diào)用,用于采集卡的注冊(cè)和注銷。由于一個(gè)信號(hào)采集子系統(tǒng)可以掛接多個(gè)A/D采集卡設(shè)備,為了提供更大的靈活性,采集系統(tǒng)的注冊(cè)和注銷以及與信號(hào)處理子系統(tǒng)的連接分配均以A/D采集卡設(shè)備為單位。因此一個(gè)信號(hào)采集子系統(tǒng)上的不同采集卡設(shè)備可以被分配給不同的信號(hào)處理子系統(tǒng)使用。RegisteMonitor()和UnRegisteMonitor()方法則用于信號(hào)處理系統(tǒng)子系統(tǒng)的注冊(cè)和注銷,它們以主機(jī)名和IP地址作為注冊(cè)標(biāo)識(shí)。

  當(dāng)信號(hào)采集子系統(tǒng)或信號(hào)處理子系統(tǒng)啟動(dòng)運(yùn)行時(shí),首先激活本身系統(tǒng)的IDataTransmit或IReceiveData接口,然后根據(jù)配置調(diào)用CoCreateInstanceEx()激活代理服務(wù)器系統(tǒng)。當(dāng)成功地查詢到代理服務(wù)的IRegisterSubSystem接口后,信號(hào)處理子系統(tǒng)調(diào)用IRegisterSubSystem的RegisteMonitor()直接注冊(cè),將本系統(tǒng)的IReceiveData接口指針傳給代理服務(wù)器子系統(tǒng)。同樣,當(dāng)信號(hào)采集子系統(tǒng)查詢到A/D采集卡設(shè)備時(shí),通過代理服務(wù)器的IRegisterSubSystem接口注冊(cè)本設(shè)備,也將本系統(tǒng)的IDataTransmit接口指針和設(shè)備標(biāo)識(shí)信息傳給代理服務(wù)器。代理服務(wù)器子系統(tǒng)通過交換2個(gè)子系統(tǒng)的接口指針實(shí)現(xiàn)子系統(tǒng)的相互連接。

3? 結(jié)束語

  將DCOM技術(shù)應(yīng)用于信號(hào)采集處理系統(tǒng)是一個(gè)很好的嘗試。本文描述了這樣一個(gè)分布式實(shí)例系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過程。實(shí)踐證明,利用DCOM技術(shù),可極大地?cái)U(kuò)展原有的信號(hào)采集處理系統(tǒng),使用戶靈活地組建和分布自已的系統(tǒng),在實(shí)際中具有廣闊的應(yīng)用前景。

?

參考文獻(xiàn)

1? Anderson J著,張知一,史元春譯.Visual C++5 ActiveX編程指南.北京:清華大學(xué)出版社,1998

2? Michaelis M著,宋麗紅,李二勇,楊超峰等譯.COM+編程指南.北京:機(jī)械工業(yè)出版社,2002

3? 何艾,葉思敏,謝輝.基于DCOM分布式GIS系統(tǒng)的實(shí)現(xiàn).微計(jì)算機(jī)信息,2002;(3)

4? 趙明宇,徐立中.基于COM/DCOM技術(shù)的分布式監(jiān)控系統(tǒng)實(shí)現(xiàn).計(jì)算機(jī)與現(xiàn)代化,2002;(12)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。