本文继续介绍OPC AE规范的IConnectionPointContainer接口的相关知识,更多通信资源请登录网信智汇()。OPC AE规范描述了OPC事件服务器应该实现的对象和接口,实现在多个OPC客户端间共享事件和警报条件。
1、IConnectionPointContainer
这里没有讨论ConnectionPoints的一般原则,因为它们在Microsoft文档中有非常清楚的介绍。假定读者熟悉这项技术。
【资料图】
同样,微软对IEnumConnectionPoints、IConnectionPoint和IEnumConnections接口的详细信息及其在本文中的正确使用进行了很好的定义,此处不再讨论。
这里讨论的IConnectionPointContainer接口是在OPCEventSubscription上实现的从IOPCEventServer::CreateEventSubscription()获得的对象。此EventSubscription对象将至少支持IOPCEventSubscriptionMgt和IConnectionPointContainer。请注意,在理论上,连接点的订阅和取消订阅方法可以在IOPCEventSubscriptionMgt接口,但是使用单独的ConnectionPoint实现更符合最先进的Microsoft实现。
客户端应用程序实现的一个回调对象可用于为多个报警服务器提供服务。因此,必须向客户端应用程序提供有关服务器的信息,以便它能够成功地解释回调中包含的项。每个回调将仅包含指定服务器中的项。
注:符合OPC标准的服务器不需要支持每个服务器之间的多个连接订阅对象和客户端(尽管它们确实需要支持创建多个订阅客户端的对象,以防客户端希望基于多组筛选器监视它们标准)。鉴于此以及订阅对象是特定于客户端的实体这一事实,预计对于几乎所有的应用来说,单个连接就足够了。因此(根据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连接的数据通过IOPCEventSink返回,后者接收新事件通知和刷新事件通知。
注册的回调函数可以由客户端应用程序指定,使得它跨越多个事件订阅。因此,必须向客户端应用程序提供有关事件订阅的信息,以便能够成功地解释事件流中包含的项。每个事件流只能包含在指定的事件订阅中定义的项。
更多通信资源请登录网信智汇()。