我想要创建一个应用程序来控制摄像机参数(用户/ptz/get视频)。照相机使用的是ONVIF protocol。
我正在使用Qt框架5.13。
我从gsoap找到了onfiv.com工具和.wsdl文件。然后使用https://www.genivia.com/examples/onvif/index.html的指南从devicemanagement.wsdl创建.h/..cpp文件。我已经从devicemanagement.wsdl生成了一个代理类,Qt上的生成文件的程序正在工作,但是我需要用户授权和ptz控件.
如何使用gsoap,onvif规范文件(.wsdl)生成类,哪些用户授权和ptz控件用于Qt?
也许有人在Qt上做了同样的应用,并且可以帮助我。
发布于 2022-02-07 18:21:22
在wsdl2h上运行ptz.wsdl:
wsdl2h -O4 -P -x -o onvif.h http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl这假设您将当前目录中的typemap.dat文件与ONVIF命名空间绑定在一起,请参阅ONVIF示例以获取该文件。
选项-O4积极地“切片”WSDL,以将代码大小减少到必要的组件,请参阅文章减少基于WSDL的Web服务开发成本的模式切片方法。
要生成C++代理类:
soapcpp2 -C -j -2 -I gsoap/import onvif.h-C选项只指定客户端,-j指定代理类,-2指定SOAP1.2强制执行,-I是导入必要的文件。
如果您需要WS-Security身份验证,那么添加行:
#import "wsse.h"如果还没有到onvif.h文件,则重新运行soapcpp2。
汇编:
c++ -O2 -I. -Igsoap/custom -o app soapPTZBindingProxy.cpp soapC.cpp dom.cpp stdsoap2.cpp wsseapi.c一些源代码文件是生成的,另一些是gSOAP库的一部分。
代码生成工具有很多选项,所以这在一定程度上取决于您想要完成的任务。
如果您想使用QT字符串和类型,那么也可以通过修改typemap.dat文件和使用gsoap/定制中的自定义序列化程序来完成。例如,定制/qstring.h.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 然后重新运行wsdl2h以获得QT字符串绑定。使用您的项目编译自定义/qtstring.cpp. your。
https://stackoverflow.com/questions/71017001
复制相似问题