使用gsoap2.8.11轻松实现ONVIF_discover教程
需积分: 49 98 浏览量
更新于2024-09-11
收藏 278KB PDF 举报
"这篇教程主要介绍了如何使用gsoap2.8.11来实现ONVIF设备发现功能(onvif_discover),并提供了详细的步骤。教程由他人指导并整理,适用于初学者,简化了利用gsoap开发ONVIF应用的复杂度。"
在ONVIF协议的实现过程中,gsoap是一个非常重要的工具,它帮助开发者处理SOAP和WSDL相关的复杂性。在gsoap2.8.11版本中,wsddapi插件提供了预定义的接口,使得实现ONVIF设备发现变得更加简单,不再需要手动处理probe的所有细节。
首先,你需要从ONVIF官网下载wsdl和xsd文件,例如`analytics.wsdl`, `devicemgmt.wsd`, 等等。然后使用wsdl2h工具生成`.h`头文件,命令如下:
```bash
wsdl2h -sck-t /opt/nfshost/gsoap-2.8/gsoap/typemap.dat -o onvif.h analytics.wsdl analyticsdevice.wsdl devicemgmt.wsdldisplay.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl search.wsdl deviceio.wsdl
```
这个过程可能会较慢,因为wsdl2h会尝试在线下载依赖的xsd和wsdl文件。为了提高效率,你可以提前下载这些文件,并修改wsdl文件中的`schemaLocation`属性,指向本地路径。
接下来,你需要编辑生成的`onvif.h`文件,添加`#import "wsse.h"`,引入身份验证相关的头文件。`wsse`是用于处理Web服务安全的标准,对于ONVIF设备通信来说,通常需要进行身份验证。
然后,使用soapcpp2生成C/C++代码,命令如下:
```bash
soapcpp2 -2 -L -c -x -d../ -I/opt/nfshost/gsoap-2.8/gsoap:/opt/nfshost/gsoap-2.8/gsoap/import/:/opt/nfshost/gsoap-2.8/gsoap/custom/ onvif.h
```
这将生成一系列的源文件和库,供你的项目使用。通过填充wsddapi提供的接口,你可以实现ONVIF设备的发现功能,即`onvif_discover`。
在实际使用中,你需要理解WSDL(Web服务描述语言)和SOAP(简单对象访问协议),它们是ONVIF协议的基础。WSDL描述了Web服务的接口、消息格式和通信方式,而SOAP则是基于XML的协议,用于交换结构化的信息。
此外,ONVIF设备发现通常涉及使用Probe、ProbeMatch和 Bye 消息。你需要正确配置和使用这些消息,以找到网络上的ONVIF设备。在gsoap的帮助下,你可以创建一个客户端,发送Probe请求,然后接收并解析来自ONVIF设备的ProbeMatch响应,从而实现设备的发现和连接。
这篇教程提供了一个简化的流程,帮助开发者利用gsoap2.8.11快速实现ONVIF协议的设备发现功能。通过学习和实践,你可以进一步理解和掌握ONVIF协议以及gsoap的使用方法,这对于开发视频监控系统或其他与ONVIF兼容的物联网设备至关重要。
2017-03-19 上传
2017-03-19 上传
2019-01-22 上传
2021-10-03 上传
2022-09-23 上传
2021-06-05 上传
2022-09-21 上传
2019-12-26 上传
2022-09-14 上传
camel_in_sand
- 粉丝: 1
- 资源: 19
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析