通訊協(xié)議028——全網(wǎng)獨有的OPC AE知識四之接口(十二)

本文繼續(xù)介紹OPC AE規(guī)范的IConnectionPointContainer接口的相關知識,更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。OPC AE規(guī)范描述了OPC事件服務器應該實現(xiàn)的對象和接口,實現(xiàn)在多個OPC客戶端間共享事件和警報條件。
1、IConnectionPointContainer
這里沒有討論ConnectionPoints的一般原則,因為它們在Microsoft文檔中有非常清楚的介紹。假定讀者熟悉這項技術。
同樣,微軟對IEnumConnectionPoints、IConnectionPoint和IEnumConnections接口的詳細信息及其在本文中的正確使用進行了很好的定義,此處不再討論。
這里討論的IConnectionPointContainer接口是在OPCEventSubscription上實現(xiàn)的從IOPCEventServer::CreateEventSubscription()獲得的對象。此EventSubscription對象將至少支持IOPCEventSubscriptionMgt和IConnectionPointContainer。請注意,在理論上,連接點的訂閱和取消訂閱方法可以在IOPCEventSubscriptionMgt接口,但是使用單獨的ConnectionPoint實現(xiàn)更符合最先進的Microsoft實現(xiàn)。
客戶端應用程序實現(xiàn)的一個回調對象可用于為多個報警服務器提供服務。因此,必須向客戶端應用程序提供有關服務器的信息,以便它能夠成功地解釋回調中包含的項。每個回調將僅包含指定服務器中的項。
注:符合OPC標準的服務器不需要支持每個服務器之間的多個連接訂閱對象和客戶端(盡管它們確實需要支持創(chuàng)建多個訂閱客戶端的對象,以防客戶端希望基于多組篩選器監(jiān)視它們標準)。鑒于此以及訂閱對象是特定于客戶端的實體這一事實,預計對于幾乎所有的應用來說,單個連接就足夠了。因此(根據(jù)Microsoft建議)的IConnectionPoint接口的EnumConnections方法允許IOPCEventSink::OnEvent回調返回E_NOTIMPL。
?
2、IEnumConnectionPoints
有關此方法的說明,請參閱Microsoft文檔。
?
OPC事件訂閱必須返回一個包含IOPCEventSink的枚舉器。其他供應商還允許特定的回調。
?
3、FindConnectionPoint
有關此方法的說明,請參閱Microsoft文檔。
OPC事件訂閱必須支持IID_ IOPCEventSink。還允許額外的供應商特定回調。
?
4、IConnectionPoint
從事件訂閱的ConnectionPointContainer返回IOPCEventSink的IConnectionPoint。有關其方法的更多信息,請參閱此界面的Microsoft文檔,其中包括“訂閱”和“取消訂閱”。
返回到Advise連接的數(shù)據(jù)通過IOPCEventSink返回,后者接收新事件通知和刷新事件通知。
注冊的回調函數(shù)可以由客戶端應用程序指定,使得它跨越多個事件訂閱。因此,必須向客戶端應用程序提供有關事件訂閱的信息,以便能夠成功地解釋事件流中包含的項。每個事件流只能包含在指定的事件訂閱中定義的項。
更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。