2012-11-16 246 views
9

我正在开发一个应用程序,它将探测连接到网络上的ONVIF设备以进行自动发现。根据探测消息的ONVIF核心规范SOAP格式为:如何在C#中发现onvif设备#

<?xml version="1.0" encoding="UTF-8"?> 
<e:Envelope xmlns:e="http://www.w3.org/2003/05/soap-envelope" 
xmlns:w="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" 
xmlns:dn="http://www.onvif.org/ver10/network/wsdl"> 
<e:Header> 
<w:MessageID>uuid:84ede3de-7dec-11d0-c360-f</w:MessageID> 
<w:To e:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</w:To> 
<w:Action 
a:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/Pr 
obe</w:Action> 
</e:Header> 
<e:Body> 
<d:Probe> 
<d:Types>dn:NetworkVideoTransmitter</d:Types> 
</d:Probe> 
</e:Body> 
</e:Envelope> 

我怎么能在WCF发送这封邮件,发现ONVIF deivce?

回答

16

只需使用WCF web service discovery功能即可。 ONVIF遵循与WCF实施的标准相同的标准。您需要使用DiscoveryClient类发送探针。

已经有一段时间了,因为它可能不完全正确,但您的代码应该如下所示。多播探测器将查找所有可发现的设备。您可以通过检查事件处理程序中的每个响应的元数据来检测您的onvif设备是否响应。如果您仍然无法获得响应,则可能是网络或设备问题。如果您确实收到回复,则可以优化您的查找条件以仅通知所需的类型。

class Program 
{ 
    static void Main(string[] args) 
    { 
     var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); 

     var discoveryClient = new DiscoveryClient(endPoint); 

     discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; 

     FindCriteria findCriteria = new FindCriteria(); 
     findCriteria.Duration = TimeSpan.MaxValue; 
     findCriteria.MaxResults = int.MaxValue; 
     discoveryClient.FindAsync(findCriteria); 

     Console.ReadKey(); 
    } 

    static void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e) 
    { 
     //Check endpoint metadata here for required types. 

    } 
} 
+0

亲爱的西蒙,我试过这个,但没有得到任何回应。我对这个SOAP元素感到困惑 dn:NetworkVideoTransmitter 如何在FindCriteria中添加此项? – user1828855

+2

将其添加到查找条件的合同类型名称。 FindCriteria.ContractTypeNames。取决于onvif的版本NetworkVideoTransmitter可能被指定为不是Type的范围。尝试做一个没有标准的异步查找。使用回调,这将允许您检查来自您的onvif设备应包括在内的所有可发现设备的响应。从这些信息你应该能够执行更有针对性的查找。 –

+0

胡拉....!我得到了我的ONVIF设备的回应。 thnx很多这个指导西蒙。 – user1828855