2016-08-05 5 views
1

Я пытаюсь реализовать сервер устройств камеры с стандартами профиля onvif с помощью gsoap. при динамическом обнаружении ws, когда я пытался запустить код в https://github.com/mpromonet/ws-discovery/blob/master/gsoap/server.cpp, диспетчер устройств Onvif не дал никакого ответа на мое сообщение о пробных сообщениях. Я вижу, что я получаю пробное сообщение, отправляя пробные сообщения, но диспетчер устройств Onvif просто пренебрегает ими. Я сделал эти изменения параметров для моего устройства:Устройство Onvif не найдено менеджером устройств Onvif

const int _metadataVersion = 1; 
static const char* _xaddr= "http://10.0.0.50:1881"; 
const char* _type="tdn:NetworkVideoTransmitter " "tds:Device " ; 
const char* _scope= 
     "onvif://www.onvif.org/name/ru " 
     "onvif://www.onvif.org/hardware/hw " 
     "onvif://www.onvif.org/Profile/Streaming " 
     "onvif://www.onvif.org/location/ANY " 
     "onvif://www.onvif.org/type/video_encoder onvif://www.onvif.org/type/audio_encoder onvif://www.onvif.org/type/ptz "; 

const char* _endpoint="urn"; 

Я пробовал много параметров, но я не смог найти решение. Какие изменения мне нужно сделать для того, чтобы их можно было обнаружить менеджером устройств Onvif?

ответ

1

Как можно видеть, пространство имен вы использовали (TDN & ТДС) не объявлены в созданных пространствах имен (в генераторных/wsdd.nsmap):

#include "soapH.h" 
SOAP_NMAC struct Namespace namespaces[] = 
{ 
     {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL}, 
     {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL}, 
     {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, 
     {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, 
     {"wsa", "http://schemas.xmlsoap.org/ws/2004/08/addressing", NULL, NULL}, 
     {"wsdd", "http://schemas.xmlsoap.org/ws/2005/04/discovery", NULL, NULL}, 
     {NULL, NULL, NULL, NULL} 
}; 

Для того, чтобы указать wsdd:ProbeType с квалифицированным Имя, которое вы должны использовать:

"http://www.onvif.org/ver10/network/wsdl": NetworkVideoTransmitter

Это может быть переменного тока hieved указав -t аргумент:

ws-discovery.exe -t \"http://www.onvif.org/ver10/network/wsdl\":NetworkVideoTransmitter \ 
       -x http://10.0.0.50:1881 

или модифицировать код:

const char* _type="\"http://www.onvif.org/ver10/network/wsdl\":NetworkVideoTransmitter" ; 
+0

IP-адрес в данном примере, является то, что адрес камеры вы ищете? – Murphybro2

+0

@ Murphybro2: это http-адрес камеры, который будет доступен для обнаружения WS-Discovery. Затем клиент может использовать этот http-адрес для запроса камеры, отправки некоторых запросов onvif. – mpromonet