我正在尝试使用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一起使用?
谢谢。