2012-11-16 91 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