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

本文繼續(xù)介紹OPC AE規(guī)范的IOPCEventSubscriptionMgt2接口的相關知識,更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。OPC AE規(guī)范描述了OPC事件服務器應該實現(xiàn)的對象和接口,實現(xiàn)在多個OPC客戶端間共享事件和警報條件。
可選的IOPCEventSubscriptionMgt2接口用于設置/獲取訂閱當訂閱的?;顣r間為非零時,服務器將確??蛻舳思词乖跊]有要報告的新事件,通過以最小已知頻率提供回調(diào),客戶端可以確保服務器和訂閱的健康,而無需“ping服務器”(定期調(diào)用服務器方法的常見做法,例如IOPCEventServer::GetStatus())。
IOPCEventSubscriptionMgt2的方法如下:
?
1)HRESULT SetKeepAlive(
[in] DWORD dwKeepAliveTime,
[out] DWORD *pdwRevisedKeepAliveTime
);
客戶端可以設置訂閱的保持活動時間,以使服務器在沒有要報告的新事件時提供訂閱的客戶端回調(diào)。然后,客戶端可以確保服務器和訂閱的健康,而無需通過調(diào)用GetStatus()來ping服務器。
使用此功能,客戶端可以期望在指定的?;顣r間內(nèi)進行回調(diào)(數(shù)據(jù)或保活)。
當發(fā)送真實數(shù)據(jù)時,服務器應重置其?;疃〞r器(即,無論數(shù)據(jù)回調(diào)如何,都不能在等于保活時間的固定周期內(nèi)不斷發(fā)送保活回調(diào))。
keep-alive回調(diào)包含對IOPCEventSink::OnEvent()的調(diào)用,dwCount設置為零。
當訂閱處于非活動狀態(tài)時,將不會發(fā)生保持活動回調(diào)。
保持活動回調(diào)不會影響IOPCEventServer::GetStatus()返回的OPCEVENTSERVERSTATUS::ftLastUpdateTime的值。
?
2)HRESULT GetKeepAlive(
[out] DWORD *pdwKeepAliveTime
);
返回訂閱的當前活動保持活動時間。
更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。