Estoy desarrollando una aplicación que se encargará de la sonda de ONVIF dispositivos conectados en red para el auto-descubrimiento. De acuerdo con ONVIF Núcleo de la especificación SOAP formato de la Sonda mensaje es :

 <?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-f01234567890</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>

¿Cómo puedo enviar este mensaje en WCF para descubrir onvif deivce?

OriginalEl autor user1828855 | 2012-11-16

1 Comentario

  1. 16

    Solo uso el Servicio web WCF descubrimiento características. ONVIF sigue el mismo estándar como el implementado por la WCF. Usted necesitará utilizar el DiscoveryClient clase para enviar la sonda.

    Ha sido un tiempo desde que he hecho, por lo que podría no ser exactamente correcta, pero el código debe ser similar a la siguiente. La multidifusión de la sonda encontrará todos los dispositivos detectables. Usted puede detectar si su onvif dispositivo ha respondido mediante la inspección de los metadatos para cada respuesta en el controlador de eventos. Si usted todavía no puede obtener una respuesta probablemente es una red o dispositivo en cuestión. Si recibe una respuesta, puede refinar sus criterios de búsqueda que sólo se notificará de tipos necesarios.

    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;
            //Edit: optionally specify contract type, ONVIF v1.0
            findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter",
                "http://www.onvif.org/ver10/network/wsdl"));
    
            discoveryClient.FindAsync(findCriteria);
    
            Console.ReadKey();
        }
    
        static void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e)
        {
            //Check endpoint metadata here for required types.
    
        }
    }
    Estimado Simón, he intentado esto pero no recibió respuesta alguna. Estoy confunden acerca de este JABÓN elemento <d:Tipos de>dn:NetworkVideoTransmitter</d:Tipos de> ¿Cómo es agregar esto en FindCriteria?
    Añadir a que el tipo de contrato de los nombres de los criterios de búsqueda. FindCriteria.ContractTypeNames. Dependiendo de la versión de onvif NetworkVideoTransmitter puede ser especificado como un ámbito no un Tipo. Trate de hacer un async encontrar sin criterios. Mediante una llamada de vuelta, esto le permitirá inspeccionar las respuestas de todos los dispositivos detectables su onvif dispositivo debe ser incluido. A partir de esta información debe ser capaz de realizar una más dirigida a encontrar.
    Hurah….! Tengo las respuestas de mi ONVIF Dispositivo. Thnx mucho para que esta Guía de Simon.
    No hay problema. Tal vez a usted le gusta marcar mi respuesta? 🙂
    NOTA: de Acuerdo a la WS-Discovery especificación, su ONVIF dispositivos de respuesta, incluso si no hay ningún «ContractTypeNames» criterios. El propósito de los criterios para reducir el número de respuestas, no para habilitar las respuestas. Muchos dispositivos, sin embargo, son demasiado restrictivas en su interpretación de la especificación. Algunas aplicaciones de enviar Sondas con diferentes criterios, con la esperanza de encontrar a todos los dispositivos en los que realmente preocupa, ignorando las respuestas de los dispositivos que realmente no importan.

    OriginalEl autor Simon Wood

Dejar respuesta

Please enter your comment!
Please enter your name here