2016-06-22 1 views
1

J'essaie d'implémenter le protocole onvif côté caméra (serveur) avec un microcontrôleur, sans aucune implémentation pour le moment, j'essaie de Les fichiers wsdl du site onvif (tels que http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl) pour générer les en-têtes et les fichiers d'implémentation.Erreur lors de l'utilisation de soapcpp2 avec un fichier d'en-tête ONVIF généré avec wsdl2h (GSOAP avec linux)

J'utilisé gsoap, avec la commande wsdl2h -c -o devicemgmt.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl, et il me génère le devicemgmt.h, alors quand je fais soapcpp2 devicemgmt.h je

`devicemgmt.h(12328): syntax error 
devicemgmt.h(12327): Syntax error: declaration expected 
devicemgmt.h(12330): syntax error 
devicemgmt.h(12329): Syntax error: declaration expected 
devicemgmt.h(12332): syntax error 
devicemgmt.h(12331): Syntax error: declaration expected 
devicemgmt.h(12333): syntax error 
devicemgmt.h(12339): Syntax error: declaration expected 
devicemgmt.h(12342): syntax error 
devicemgmt.h(12341): Syntax error: input before ; skipped 
devicemgmt.h(12371): syntax error 
devicemgmt.h(12370): Syntax error: declaration expected 
devicemgmt.h(12373): syntax error 
devicemgmt.h(12372): Syntax error: declaration expected 
devicemgmt.h(12375): syntax error 
devicemgmt.h(12374): Syntax error: declaration expected 
devicemgmt.h(12377): syntax error 
devicemgmt.h(12376): Syntax error: declaration expected 
devicemgmt.h(12415): syntax error 
devicemgmt.h(12414): Syntax error: declaration expected 
devicemgmt.h(12417): syntax error 
devicemgmt.h(12416): Syntax error: declaration expected 
Critical error: too many syntactic errors, bailing out` 

Voici le oportion du fichier d'en-tête où les erreurs sont INTERVENUES :

`/// "http://docs.oasis-open.org/wsn/b-2":NotificationMessageHolderType is a complexType. 
struct ns4__NotificationMessageHolderType 
{ 
/// Element reference "http://docs.oasis-open.org/wsn/b-2":SubscriptionReference. 
///JUST BELOW THATS THE LINE 12328 WHERE THE ERROR IS 
ns1__EndpointReferenceType*   SubscriptionReference   0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":Topic. 
     struct ns4__TopicExpressionType*  Topic       0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":ProducerReference. 
     ns1__EndpointReferenceType*   ProducerReference    0; ///< Optional element. 
     struct _ns4__NotificationMessageHolderType_Message 
     { 
    /// TODO: <any namespace="##any" minOccurs="1" maxOccurs="1"> 
    /// TODO: Schema extensibility is user-definable. 
    ///  Consult the protocol documentation to change or insert declarations. 
    ///  Use wsdl2h option -x to remove this element. 
    ///  Use wsdl2h option -d for xsd__anyType DOM (soap_dom_element). 
     _XML         __any       0; ///< Catch any element content in XML string. 
     }         Message      1; ///< Required element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":NotificationProducerRP 

    /// "http://docs.oasis-open.org/wsn/b-2":NotificationProducerRP is a complexType. 
    struct _ns4__NotificationProducerRP 
    { 
    /// Size of the dynamic array of struct ns4__TopicExpressionType* is 0..unbounded 
     $int         __sizeTopicExpression   0; 
    /// Array struct ns4__TopicExpressionType* of length 0..unbounded 
     struct ns4__TopicExpressionType*  TopicExpression    0; 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":FixedTopicSet. 
     enum xsd__boolean*     FixedTopicSet     0; ///< Optional element. 
    /// Size of the dynamic array of xsd__anyURI* is 0..unbounded 
     $int         __sizeTopicExpressionDialect 0; 
    /// Array xsd__anyURI* of length 0..unbounded 
     xsd__anyURI*       TopicExpressionDialect   0; 
    /// Element reference "http://docs.oasis-open.org/wsn/t-1":TopicSet. 
     struct ns7__TopicSetType*   ns7__TopicSet     0; ///< Optional element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":SubscriptionManagerRP 

    /// "http://docs.oasis-open.org/wsn/b-2":SubscriptionManagerRP is a complexType. 
    struct _ns4__SubscriptionManagerRP 
    { 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":ConsumerReference. 
     ns1__EndpointReferenceType   ConsumerReference    1; ///< Required element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":Filter. 
     struct ns4__FilterType*    Filter       0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":SubscriptionPolicy. 
     struct ns4__SubscriptionPolicyType* SubscriptionPolicy    0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":CreationTime. 
     time_t*        CreationTime     0; ///< Optional element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":Notify 

    /// "http://docs.oasis-open.org/wsn/b-2":Notify is a complexType. 
    struct _ns4__Notify 
    { 
    /// Size of the dynamic array of struct ns4__NotificationMessageHolderType* is 1..unbounded 
     $int         __sizeNotificationMessage  1; 
    /// Array struct ns4__NotificationMessageHolderType* of length 1..unbounded 
     struct ns4__NotificationMessageHolderType* NotificationMessage   1; 
    /// TODO: <any namespace="##other" minOccurs="0" maxOccurs="unbounded"> 
    /// TODO: Schema extensibility is user-definable. 
    ///  Consult the protocol documentation to change or insert declarations. 
    ///  Use wsdl2h option -x to remove this element. 
    ///  Use wsdl2h option -d for xsd__anyType DOM (soap_dom_element). 
    /// Size of the array of XML or DOM nodes is 0..unbounded 
     $int         __size      0; 
     _XML         __any       0; ///< Catch any element content in XML string. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":UseRaw 

    /// "http://docs.oasis-open.org/wsn/b-2":UseRaw is a complexType. 
    struct _ns4__UseRaw 
    { 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":Subscribe 

    /// "http://docs.oasis-open.org/wsn/b-2":Subscribe is a complexType. 
    struct _ns4__Subscribe 
    { 
    /// Element ConsumerReference of type "http://www.w3.org/2005/08/addressing":EndpointReferenceType. 
     ns1__EndpointReferenceType   ConsumerReference    1; ///< Required element. 
    /// Element Filter of type "http://docs.oasis-open.org/wsn/b-2":FilterType. 
     struct ns4__FilterType*    Filter       0; ///< Optional element. ` 

Quelqu'un peut-il m'aider s'il vous plaît? Je ne sais pas quoi faire, quel est le problème avec ns1__EndpointReferenceType et où est cette erreur de syntaxe? Que dois-je ajouter aux en-têtes Onvif s'il y a quelque chose à ajouter?

+0

probablement un problème avec votre typemap.dat, parce que j'exécuter vos commandes avec succès. Avez-vous regardé [FAQs gSOAP] (http://www.genivia.com/resources.html#How_do_I_use_gSOAP_with_the_ONVIF_specifications?)? – mpromonet

+0

Salut, je viens de regarder dedans, et j'ai modifié le fichier typemap.dat en ajoutant les fichiers qui n'étaient pas ici, mais il est toujours échoué. J'ai aussi essayé les commandes proposées par la FAQ gSOAP mais elles ne fonctionnent pas, pouvez-vous m'aider à comprendre pourquoi? – samyh

+0

Lorsque j'ajoute les commandes de la FAQ je reçois un en-tête vide, il dit qu'il ne peut pas ouvrir le typemap.dat – samyh

Répondre

0

Assurez-vous d'utiliser le typemap.dat fourni avec la distribution gsoap 2.8.x. Ce fichier typemap.dat inclut les liaisons ONVIF, mais aussi les WS-Addressing wsa5.h de liaison pour l'élément EndpointReference:

#import "wsa5.h" 
... 
class wsnt__NotificationMessageHolderType 
{ public: 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2:""http://docs.oasis-open.org/wsn/b-2":SubscriptionReference. 
    wsa5__EndpointReferenceType*   SubscriptionReference   0;