文档章节

onvif学习(一):搭建onvif开发的架构生成

我是初级码农
 我是初级码农
发布于 2017/03/24 16:10
字数 957
阅读 66
收藏 0

学习onvif之前必须要安装一些工具。
一、安装gsoap

工具及平台:
Gsoap版本:Gsoap2.8.27 http://sourceforge.net/projects/gsoap2/files/gSOAP/
Onvif :WSDL文档(2015.12.15最新文档)
框架代码生成:windows下wsdl2、soapcpp2(win下和Linux生成一样的)

cd gsoap-2.8.27

在安装之前需要先安装一些编译工具。

安装编译工具:

$sudo apt-get install build-essential

为了成功编译gSOAP,您需要安装GTK+的开发文件和GLib库(libraries)。

$sudo apt-get install libgtk2.0-dev libglib2.0-dev

安装Checkinstall以便管理您系统中直接由源代码编译安装的软件。

$sudo apt-get install checkinstall

  安装YACC,YACC是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。

  $sudo apt-get install flex bison

  安装OpenSSL

  $sudo apt-get install openssl
  安装OpenSSL通常的库文件,首先使用以下命令来确定在Ubuntu系统中可获得的库文件的应用版本:
  $sudo apt-cache search libssl | grep SSL
  $sudo apt-get install libssl-dev

简单安装:(安装到/usr/local/gSOAP目录下)

        configure --prefix=/usr/local/gSOAP

        make

        make install

安装完成。

为了后面的C和C++版本的服务和客户端的开发能够脱离源代码目录,最好还要如下处理:

(1)将源代码目录下gsoap子目录中的import目录拷贝到gSOAP目录下来;

(2)gSOAP目录下建一个env目录,将gsoap/samples/link下的所有文件拷贝过来,并且生成envC.o(C版本要用到),方法是:

            /usr/local/gSOAP/bin/soapcpp2 -penv -c env.h

            g++ -c -I /usr/local/gSOAP/include envC.c

(3)gSOAP目录下建一个src目录,将将源代码目录下gsoap子目录中的stdsoap*.*拷贝过来。

安装完成。

二、通过gsoap-2.8(解压gsoap2.8.27包后得到的目录)/gsoap目录下的typemap.dat生成onvif.h,具体操作如下:
1、创建存放onvif文件的目录(路径自定义)。如:/home/onvif_new
2、将gsoap-2.8/gsoap下的typemap.dat拷贝到/home/onvif_new
3、使用wsdl2h生成onvif.h,这里使用在线的方式,免得还要手动添加好多.xsd文件
wsdl2h -o onvif.h -c -s -t typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
http://www.onvif.org/onvif/ver10/events/wsdl/event.wsdl
http://www.onvif.org/onvif/ver10/display.wsdl
http://www.onvif.org/onvif/ver10/deviceio.wsdl
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
http://www.onvif.org/onvif/ver10/receiver.wsdl
http://www.onvif.org/onvif/ver10/recording.wsdl
http://www.onvif.org/onvif/ver10/search.wsdl
http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl
http://www.onvif.org/onvif/ver10/replay.wsdl
http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl
http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl
http://www.onvif.org/onvif/ver10/schema/onvif.xsd
http://www.onvif.org/ver10/actionengine.wsdl
http://www.onvif.org/ver10/pacs/accesscontrol.wsdl
http://www.onvif.org/ver10/pacs/doorcontrol.wsdl
http://www.onvif.org/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl
http://www.onvif.org/ver10/accessrules/wsdl/accessrules.wsdl
http://www.onvif.org/ver10/credential/wsdl/credential.wsdl
http://www.onvif.org/ver10/schedule/wsdl/schedule.wsdl
这些网址之间用空格隔开(好像每个typemap.dat对应不同的网址)。
4、在onvif.h中加入#import “wsse.h”,用来做安全验证(加在已有的头文件后边)。
三、使用soapcpp2生成C文件
1、soapcpp2 -c onvif.h -x -I /home/gsoap-2.8/gsoap/import -I /home/gsoap-2.8/gsoap/
注:做服务器端开发,server和client端的代码都要生成,因为sever端的代码要用到client中的函数这样就不需要自己写了。
注:生成的时候可能会出现如下错误:
    wsa5.h(290): **ERROR**: remote method nameclash: struct/class 'SOAP_ENV__Fault' already declared at line 274
解决办法如下:
    打开gsoap_2.8.17\gsoap-2.8\gsoap\import 路径下的wsa5.h, 将277行的SOAP_ENV__Fault结构体注释掉(改成其他名字亦可)

2、删除一些生成的多余的文件。
     (1).后缀为nsmap的命名空间文件内容都一样,保留一个即可,后缀改为.h文件(wsdd.nsmap更名为wsdd.h),需要的时候包含此文件即可
      (2).删除soapClientLib.c和soapServerLib.c文件。
3.将/home/gsoap-2.8/gsoap/下的stdsoap2.h和stdsoap2.c文件和/home/gsoap-2.8/gsoap/custom下的duration.c文件都拷贝到当前目录下

 到这里基本的onvif框架已经搭建完成。

   

© 著作权归作者所有

共有 人打赏支持
我是初级码农
粉丝 0
博文 1
码字总数 957
作品 0
成都
程序员
几大安防行业标准专业解读 (ONVIF、PSIA、HDCCTV、GB/T28181)

标准是网络监控应用绕不过的话题。当前,国际上ONVIF、PSIA、HDCCTV标准阵营日益扩大,国内联网监控标准GB/T28181标准的发布,以及一些地方规范的制定(如上海、天津等城市最新发布的针对数字...

lsnpurdue
2017/07/27
0
0
开放型网络视频接口论坛 ONVIF协议

一、什么是ONVIF? 1.1形成 2008年5月,由安讯士(AXIS)联合博世(BOSCH)及索尼(SONY)公司三方宣布携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Ne...

jack688
06/26
0
0
gSoap实现ONVIF的设备发现(windows下)

一、要准备的文件: 1.ONVIF相关的WSDL文件,对于设备发现,只需要用到RemoteDiscovery.wsdl一个即可, 2.gSoap的压缩包,找到/gsoap/bin/win32文件夹中的soapcpp2.exe以及wsdl2h.exe,以及在...

余诺
2013/04/01
0
15
gsoap + onvif 编译

/gsoap onvif 客户端功能开发***/ 1.编译ssl ,其中安装目录会被gsoap编译时用到 见17行 2.gsoap unzip gsoap_2.8.34.zip ./configure --with-openssl=/home/llf/x86/openssl-install (此为o......

llf_17
2016/11/14
0
0
onvif网络摄像头开发(一)

ONVIF: ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络...

xiaot99
2014/10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部