Onvif-DeviceMgmt模块总结

在通过生成gsoap工具生成onvif客户端框架代码后,学习onvif客户端接口的使用,以熟练使用接口为目的,为后续的开发做准备.第三天主要做了:设备发现,获取设备基本信息,获取和修改设备时间和获取设备能力这些接口的使用以及编码流程,以下对每个功能进行一个简单的总结和一些注意事项

设备发现(接口调用参数的前提)

1.WS-Discovery(全称为Web Services Dynamic Discovery):
遵循该标准,客户端预先不知道目标服务地址的情况下,可以动态地探测到可用的目标服务,以便进行服务调用.
2.Ad hoc模式:WS-Discovery模式之一,发送一个Probe(探测)消息搜寻目标服务,在该探测消息中,包含相应的搜寻条件。如果目标服务满足该条件,则直接将响应ProbeMatch消息(服务自身相关的信息,包括地址)回复给客户端.
3.多播的概念:
也叫组播,一对多,单向通信,目的地址是多播地址,主机可以通过IGMP协议请求加入或退出某个多播组(multicast group),数据只会转发给有需要(已加入组)的主机,不影响其他不需要(未加入组)的主机。如网上视频会议、网上视频点播、IPTV等。
4.注意点:
IPC摄像头用的是239.255.255.250(端口3702)
搜索时必须指定设备类型为「dn:NetworkVideoTransmitter」,否则将搜索不到IPC

获取设备基本信息

鉴权问题(以大华IPC为例)
解决方案:
1.通过web控件关闭大华鉴权.
2.在onvif.h头文件中加入#import wsse.h再生成客户端框架,调用soap_wsse_add_UsernameTokenDigest接口(参数为用户名和密码)

获取和设置设备显示时间

编码流程:
1.搜索出IPC,得到IPC的「设备服务地址」。
2.根据「设备服务地址」,调用GetSystemDateAndTime和SetSystemDateAndTime接口。

注意点:
概念: 本地时间 = UTC时间 + 时区差
IPC摄像头中显示的是本地时间,而SetSystemDateAndTime接口参数req请求需要的是UTC时间

获取设备能力

编码流程
1.利用WS-Discovery搜索到IPC,就能得知该设备「DeviceMgmt」模块的「服务地址」,我们称之为「设备服务地址」
2.使用「设备服务地址」调用「DeviceMgmt」模块的GetCapabilities接口,就能获取到所有模块的「服务地址」。

参考博客:https://blog.csdn.net/benkaoya/article/details/72424335

你可能感兴趣的:(Onvif-DeviceMgmt模块总结)