c++ 如何创建Qt ONVIF应用程序?[已关闭]

ht4b089n  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(240)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

3天前关闭。
Improve this question
我想创建一个应用程序来控制相机参数(用户/ptz/获取视频)。相机使用的是ONVIF protocol
我使用的是Qt框架5.13。
我从onfiv.com找到了gsoap工具和.wsdl文件,然后我使用https://www.genivia.com/examples/onvif/index.html中的guide从devicemanagement.wsdl创建了.h/.cpp文件,我已经从devicemanagement.wsdl生成了一个代理类,并且Qt上的程序可以使用生成的文件工作,但是我需要用户授权和ptz控制...
如何使用gsoap,onvif规范文件(.wsdl)生成类,哪些用户授权和ptz控件用于Qt?
也许有人在Qt上做了同样的应用程序,可以帮助我。

vlju58qv

vlju58qv1#

在ptz.wsdl上运行wsdl 2 h:

wsdl2h -O4 -P -x -o onvif.h http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl

这假设您在当前目录中有typemap.dat文件和ONVIF名称空间绑定,请参见ONVIF example以获取该文件。
Option -O 4积极地对WSDL进行“切片”,以将代码大小仅减少到必要的组件,请参阅文章Schema Slicing Methods to Reduce Development Costs of WSDL-Based Web Services
要生成C++代理类:

soapcpp2 -C -j -2 -I gsoap/import onvif.h

-C选项指定仅客户端,-j指定代理类,-2指定SOAP 1.2强制,-I用于导入必要的文件。
如果需要WS-Security身份验证,则添加以下行:

#import "wsse.h"

到onvif. h文件,如果还没有,那么重新运行soapcpp 2。
编制:

c++ -O2 -I. -Igsoap/custom -o app soapPTZBindingProxy.cpp soapC.cpp dom.cpp stdsoap2.cpp wsseapi.c

生成了一些源代码文件,其他的是gSOAP库的一部分。
代码生成工具有很多选项,所以这有点取决于您想要完成什么。
如果您想使用QT字符串和类型,那么也可以通过修改typemap.dat文件和使用gsoap/custom中的自定义序列化程序来完成。例如,custom/qstring. h告诉您:

To automate the wsdl2h-mapping of xsd:string to
        QString, add this line to the typemap.dat file:

        xsd__string = #import "custom/qstring.h" | xsd__string

然后重新运行wsdl 2 h以获得QT字符串绑定,将custom/qtstring.cpp与您的项目一起编译。

相关问题