文档章节

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

我是初级码农
 我是初级码农
发布于 2017/03/24 16:10
字数 957
阅读 48
收藏 0
点赞 0
评论 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

开放型网络视频接口论坛 ONVIF协议

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

jack688 ⋅ 2017/11/24 ⋅ 0

gSoap实现ONVIF的设备发现(windows下)

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

余诺 ⋅ 2013/04/01 ⋅ 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

onvif网络摄像头开发(一)

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

xiaot99 ⋅ 2014/10/14 ⋅ 0

为什么我所打印出来的soap->version值为0,soap->version的值,在哪里开始产生soap->version的

最近在做基于gsoap开源的onvif协议的开发,目前在做服务端的开发,遇到了种种问题 目前最大的疑惑是为什么我所打印出来的soap->version值为0,而soapH.h中规定的soap->version值为1和2 ,即S...

未来有我更精彩 ⋅ 2015/11/24 ⋅ 0

onvif协议规范与版本简介

onvif:Open Network Video Interface Forum 开放型网络视频接口论坛,2008.05成立 ONVIF Core Specification:定义详细的服务要求和接口规范 设备类型:Network Video Transmitter (NVT), Ne...

水海云 ⋅ 2013/05/31 ⋅ 0

onvif 前端抓拍图片接口

onvif镜头前端抓拍,抓拍图片放在镜头sd卡中,有没有onvif协议获取sd卡中的图片?

小鲅鱼 ⋅ 2012/11/06 ⋅ 2

gsoap 调用接口卡死

gsoap生成的onvif客户端程序,当调用程序期间手动把网路断开,这时候函数就会卡死不会返回,超时时间是设置了的,请问这个问题是什么原因呢?

wangdu89 ⋅ 2016/07/22 ⋅ 1

ONVIF开发用GSOAP生成C文件链接报错

这段时间在研究ONVIF,希望各位大神可以指点一二,小弟谢过了。 我自己用GSOAP生成的代码在VC6.0里面链接的时候报错(编译不报错),不知为何,望高人指点。 soapC.obj : error LNK2001: unr...

尘埃YK ⋅ 2013/01/06 ⋅ 5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部