通訊協(xié)議017——全網(wǎng)獨(dú)有的OPC AE知識(shí)四之接口(一)

本文簡(jiǎn)單介紹OPC AE規(guī)范的接口相關(guān)知識(shí),更多通信資源請(qǐng)登錄網(wǎng)信智匯(wangxinzhihui.com)。OPC AE規(guī)范描述了OPC事件服務(wù)器應(yīng)該實(shí)現(xiàn)的對(duì)象和接口,實(shí)現(xiàn)在多個(gè)OPC客戶(hù)端間共享事件和警報(bào)條件。
任何支持IOPCEventServer接口的COM對(duì)象都是OPC事件服務(wù)器。在許多情況下,OPC DA服務(wù)器還將暴露一個(gè)OPCEventServer對(duì)象,具備數(shù)據(jù)服務(wù)器和事件服務(wù)器的角色。在其他情況下,通常是專(zhuān)用的OPC事件服務(wù)器,而不是具備OPC DA的事件服務(wù)器。
本規(guī)范定義了以下COM對(duì)象,下面將簡(jiǎn)要介紹這些對(duì)象:OPCEventServer、OPCEventSubscription和OPCEventAreaBrowser。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1、OPCEventServer對(duì)象

?
上圖為OPC Event Server和IID_IOPCShutdown關(guān)閉對(duì)象的視圖。這些對(duì)象是使用CoCreateInstance或CoCreateInstanceEx創(chuàng)建。如前所述,這可能是一個(gè)OPC DA服務(wù)器對(duì)象,它也實(shí)現(xiàn)IOPCEventServer接口。
IOPCCommon接口用于執(zhí)行OPC服務(wù)器的通用功能,例如數(shù)據(jù)訪問(wèn)。例如:包括LocaleID的管理和檢索錯(cuò)誤字符串。
IOPCEventServer接口用于創(chuàng)建OPC事件訂閱和OPC事件區(qū)域?yàn)g覽器對(duì)象,查詢(xún)事件類(lèi)別和事件參數(shù),并管理?xiàng)l件。
IConnectionPointContainer和IConnectionPoint接口是可連接對(duì)象的標(biāo)準(zhǔn)DCOM接口,用于處理服務(wù)器通知即將關(guān)閉客戶(hù)端的回調(diào)。
?
2、OPCEventSubscription對(duì)象
?

上圖為客戶(hù)端使用IOPCEventServer::CreateEventSubscription方法時(shí),OPC事件服務(wù)器創(chuàng)建的OPCEventSubscription和IID_IOPCEventSink對(duì)象的視圖。
IOPCEventSubscriptionMgt接口用于配置OPC事件報(bào)告的過(guò)濾器和其他屬性。
可選的IOPCEventSubscriptionMgt2接口用于設(shè)置或獲取訂閱的keep-alive時(shí)間。
IConnectionPointContainer和IConnectionPoint接口是的標(biāo)準(zhǔn)DCOM接口可連接對(duì)象,并用于處理事件通知的回調(diào)。
?
3、OPCEventAreaBrowser對(duì)象(可選)

?
上圖是當(dāng)客戶(hù)端調(diào)用IOPCEventServer::CreateAreaBrowser方法時(shí),由OPC事件服務(wù)器創(chuàng)建的OPCEventAreaBrowser對(duì)象的視圖。
IOPCEventAreaBrowser接口為客戶(hù)端提供了一種瀏覽由服務(wù)器實(shí)現(xiàn)的過(guò)程區(qū)域組織結(jié)構(gòu)。服務(wù)器提供的事件條件被組織成一個(gè)或多個(gè)過(guò)程區(qū)域,并且客戶(hù)端可以根據(jù)指定的過(guò)程區(qū)域篩選事件訂閱。
此對(duì)象是可選的,簡(jiǎn)單事件服務(wù)器可能不支持該接口。
?
4、自定義接口開(kāi)發(fā)注意
為了正確操作,枚舉器是從對(duì)象上的方法創(chuàng)建和返回的,而不是而不是通過(guò)QueryInterface。
根據(jù)COM規(guī)范,客戶(hù)端必須釋放與“out”或“in/out”參數(shù)關(guān)聯(lián)的所有內(nèi)存。
根據(jù)COM規(guī)范,所有方法都必須在每個(gè)接口上實(shí)現(xiàn)。方法不需要的可以根據(jù)情況返回E_ NOTIMPL或S_OK。
COM不允許為Out或In/Out參數(shù)傳遞NULL。
?更多通信資源請(qǐng)登錄網(wǎng)信智匯(wangxinzhihui.com)。