Onvif设备管理器中的事件

时间:2014-08-19 09:05:48

标签: c# onvif

我正在开发一个需要使用ONVIF协议从相机接收事件(例如运动检测)的应用程序。

我已经从link下载了最新的ONVIF设备管理版本,并且能够编译并运行它。

我想使用提供的库在我自己的源代码中创建类似于Onvif设备管理器的DeviceEventsView.xaml的东西,但是我很难确定代码的哪一部分来自库本身。

有人可以如此善意地向我解释如何做到这一点吗?

这是我到目前为止所做的工作(此代码可能完全错误):

OdmSession session = new OdmSession(this.session);
IObservable<OnvifEvent> x = session.GetBaseEvents(554);
x.Subscribe(
    onvifEvent =>
    {
        try
        {
            // don't know exactly what to do here
        }
        catch (Exception err)
        {
            dbg.Error(err);
        }
    }, err =>
    {
        dbg.Error(err);
    }
);

1 个答案:

答案 0 :(得分:0)

我要回答我自己的问题。这是解决我问题的代码:

onvif.utils.OdmSession odmSession = new onvif.utils.OdmSession(session);
odmSession.GetPullPointEvents().Subscribe(
    onvifEvent =>
    {
        try
        {
            foreach (var s in onvifEvent.message.Data.simpleItem)
            {
                if (s.name == "LogicalState")
                {
                    // code here
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        } 
});