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

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

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

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

  關鍵詞: DCOM技術? 分布式系統(tǒng)? 信號采集處理

?

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

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

1? COM、DCOM技術簡介

  組件對象模型COM(Component Object Model)是微軟公司提出的一種二進制軟件交互規(guī)范,提供平臺無關的、面向對象的通信協(xié)議。COM使用面向對象的編程機制,組件之間具有極松馳的耦合性,可以實現(xiàn)穩(wěn)定的版本轉變,使應用程序能更好地擴充和復用。此外COM還具有位置無關性和語言無關性的特點。

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

2? 分布式信號采集處理系統(tǒng)的設計與實現(xiàn)

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

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

2.2 系統(tǒng)組成

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

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

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

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

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

?

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

2.3 接口設計及系統(tǒng)實現(xiàn)

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

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

本項目在IDL語言中定義如下的COM組件:

  coclass DataTransmit

  {

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

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

  };

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

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

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

  {

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

  };

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

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

  ②UnRegisteConllectionDevice([in] long hDeviceHandle);

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

 ?、躑nRegisteMonitor([in] BSTR strComputer)。

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

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

3? 結束語

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

?

參考文獻

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

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

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

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

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