如何使用ONVIF库获取令牌来切换相机的继电器?

时间:2019-09-04 17:04:23

标签: c# onvif

我正在尝试使用ONVIF库设置摄像机的继电器,但是我无法从GetRelayOutputs()方法中获得令牌。

我已经找到了几篇文章,但是我的问题必须如此简单,以至于没有人对此发表评论。

我用一个按钮制作了一个表单,用于快速调试。使用服务参考https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl,我已经可以获取时间,日期,网址等...

public partial class Form1 : Form
{
    DeviceClient deviceClient;
    public Form1()
    {
        InitializeComponent();
        ServicePointManager.Expect100Continue = false;
        var endPointAddress = new EndpointAddress("http://172.16.2.119:8899/onvif/device_service");
        var httpTransportBinding = new HttpTransportBindingElement { AuthenticationScheme = AuthenticationSchemes.Digest };
        var textMessageEncodingBinding = new TextMessageEncodingBindingElement { MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None) };
        var customBinding = new CustomBinding(textMessageEncodingBinding, httpTransportBinding);
        var passwordDigestBehavior = new PasswordDigestBehavior("admin", "admin");
        deviceClient = new DeviceClient(customBinding, endPointAddress);
        deviceClient.Endpoint.Behaviors.Add(passwordDigestBehavior);
    }

    private void button1_Click(object sender, EventArgs e)
    {       
        var relay = deviceClient.GetRelayOutputs();
        deviceClient.SetRelayOutputState(relay.First().token, RelayLogicalState.active);
    }
}

DeviceClient对象正按预期进行初始化,但是当我尝试获取继电器的输出时,它给了我一个空数组。

我做错了什么吗? 带有继电器的摄像机是否可能无法与ONVIF一起使用?

谢谢。

0 个答案:

没有答案