读懂onvif规范

资源

在这篇文章中,我们使用到了以下资源

onvif规范文件

onvif规范资源

例程

ONVIF Device(IP camera) Service server

onvif规范的分析

工作原理
上图是网络服务的开发流程,一般情况下我们会在onvif规范资源那里下载相应的wsdl文件,使用gsoap对其编译,得到对应的cpp文件,然后利用这些源文件进行接口开发,对于各个接口,其参考文档在wsdl文件对应的Documents下面下载。

实例

例如我们要实现Core specification部分内容,则需要下载该部分的wsdl,xsd文件,通过gsoap2进行编译得到cpp文件
编译好的源文件
其中 soapDeviceBindingService.h 里面的类定义了要实现的方法
其方法的详细说明可以查阅对应的规范文档 ONVIF-Core-Specification.pdf
例如,对于GetServiceCapabilities这个功能
文档里面有充分的描述:

8.1.2.3 GetServiceCapabilities
This command returns the capabilities of the device service. The service shall implement this method if the
device supports the GetServices method.
。。。。。。

对应的声明代码在 soapDeviceBindingService.h 中

/// Web service operation 'GetServiceCapabilities' implementation, should return SOAP_OK or error code
        virtual int GetServiceCapabilities(_tds__GetServiceCapabilities *tds__GetServiceCapabilities, _tds__GetServiceCapabilitiesResponse &tds__GetServiceCapabilitiesResponse) SOAP_PURE_VIRTUAL;
//

对应的实现则在例程的项目代码ServiceDevice.cpp中

int DeviceBindingService::GetServiceCapabilities(_tds__GetServiceCapabilities *tds__GetServiceCapabilities, _tds__GetServiceCapabilitiesResponse &tds__GetServiceCapabilitiesResponse)
{
    UNUSED(tds__GetServiceCapabilities);
    DEBUG_MSG("Device: %s\n", __FUNCTION__);

    ServiceContext* ctx = (ServiceContext*)this->soap->user;
    tds__GetServiceCapabilitiesResponse.Capabilities = ctx->getDeviceServiceCapabilities(this->soap);

    return SOAP_OK;
}

结尾

根据规范的文档,接口的源代码,我们就可以轻松查到各个方法的详细信息,方便日常的开发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值