onvif buildroot gsoap开发记录

本文介绍ONVIF开发流程及注意事项,强调初学者无需深入研究APP和MPP代码,而应从Buildroot环境搭建入手。文章详细记录了在Linux环境下利用Buildroot进行项目配置、编译的过程,包括解决依赖问题、配置编译选项等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

开发ONVIF其实可以先不用去熟悉app和mpp里面的代码

第一个wiretap只是用来编译u-boot,基本用不上

wiretap-buildroot是编译的时候用的,也不需要加到工程里面

可以先从wiretap-buildroot里面把版本编译出来,然后在板子上跑起来

wiretap-manager的代码我是用atom

不过编译版本的话不需要这些IDE,直接在linux shell下操作最简单

所有模块的编译都是在wiretap-buildroot里面统一做的

cd 到   cd  ~/gitspace/wiretap-buildroot/里面,然后输入  make menuconfig,弹出配置界面UI.


1、要在buildroot环境下编译。或者,要修改makefile,引用buildroot里的编译器
2、上网看一下buildroot的手册,最直接的是建立一个generic类型的项目,在packages目录里
3、参考原来的makefile,建一个cmake项目,像wiretap-app
4、cmake的话不用写makefile,写一个cmake的配置文件CMakeList.txt,方便在不同系统上移植
5、直接用makefile的话,需要手动在里面设置好编译器选项
6、如果直接输入make命令,应该是直接调用了主机默认的gcc
7、在buildroot里面不用预先设置编译器,buildroot在build模块的时候,会把环境变量传到cmake或者makefile,但cmake是自己就支持识别的,makefile要自己写


2017-10-1  buildroot使用记录

1、在 /home/xyp/gitspace目录下创建 wiretap-gsoap目录,将开源  onvif_ipcam的文件包括.h和.c等全部拷贝到此目录;
2、在 eclipsecpp中import进来这个MAKE FILE工程 (注意onvif client的几个必须要的 .h和.c文件)
3、进入到 buildroot目录 (cd /home/xyp/gitspace/wiretap-buildroot/), 再cd package,在package目录下创建  wiretap-gsoap目录, 再在该目录下创建 Config.in和 wiretap-gsoap.mk两个文件(参照 wiretap-manager的相应文件)
4、进入到 package目录,找到该目录下的 Config.in文件,在 menu "Project Wiretap" 下添加一行 source "package/wiretap-gsoap/Config.in" 即可

cd /home/xyp/onvifworkspace/Test_cmake

mkdir build
cd build
cmake ..
make

make menuconfig 图形配置界面里,重点看 target packages里面 ,  project wiretap里面配置  app和 manager工程的实际路径; 另外,在 hardware handling里看 mpp的实际路径,配置好了后保存,然后make

但是报错了 137 errors,经查,可能的原因是 内存过小,于是重新设置虚拟机Ubuntu的内存增大,重启;
之后再发现 nodejs和npm版本过久,于是update,但是发现源提示404,于是在ubuntu 界面搜索 updater,调出 updater界面,点击 stop,再点击 setting,在弹出的窗口中,将默认的源(united state)改为 china,并选择  163.mirror,但依然很多源404,  执行 sudo apt cache   apt upgrade一样很多404  于是再次到 updater窗口设置源修改为china的aliyun.mirror,然后再次 upgrade  update并安装 nodejs和npm,OK!!  然后再执行 make,基本算通过(只有一处设置路径错误)--但耗时近一小时!!

修改了错误的路径后,再次MAKE,仍然需要大约40分钟来执行命令行!

附注   npm install --save

npm install --save --registry=https://registry.npm.taobao.org () 这个太慢,取消

sudo apt install nodejs  (前提是 源已经设置并更新好了,aliyun的源)

sudo apt remove nodejs 删除过旧的版本

sudo apt-cache policy nodejs

指定安装包位置     curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -


make clean

diff .config configs/wiretapv100_defconfig

转载于:https://my.oschina.net/sicilycorleone/blog/1546410

### 使用 gSoap 实现 ONVIF 协议 #### 安装和配置 gSoap 工具链 为了使用 gSoap 来实现 ONVIF 协议,首先需要确保已正确安装并配置了 gSoap 开发环境。这通常涉及下载源码包、解压以及按照官方文档中的说明完成编译过程[^3]。 #### 获取 WSDL 文件 ONVIF 设备和服务接口定义通过 Web Services Description Language (WSDL) 描述。可以从官方网站获取最新的标准版本或特定厂商提供的扩展版 WSDL 文件[^1]。 #### 生成 C/C++ 绑定代码 利用 `wsdl2h` 和 `soapcpp2` 这两个命令行工具来解析 WSDL 并自动生成相应的存根(stub)/框架(skeleton),从而简化应用程序开发工作量: ```bash $ wsdl2h -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl $ soapcpp2 -CL onvif.h ``` 上述指令会创建一系列头文件(.h)与源文件(.cpp/.c),这些文件包含了调用远程服务所需的数据结构及函数原型声明[^4]。 #### 编写客户端程序 基于上一步骤产生的模板编写具体的业务逻辑代码。对于设备发现功能而言,主要关注点在于初始化网络连接参数设置、发送探测请求消息给目标IP地址范围内的潜在摄像机节点,并处理返回的结果集[^2]。 ```c++ #include "stdsoap2.h" #include "devicemgmt.nsmap" int main() { struct soap *soap = soap_new(); _tds__GetSystemDateAndTime request; tds__GetSystemDateAndTimeResponse response; const char* url = "http://example.com/onvif/device_service"; if(soap_call___tds__GetSystemDateAndTime(soap, url, NULL, &request, &response)== SOAP_OK){ printf("Current Time: %d-%02d-%02dT%02d:%02d:%02d\n", response.DateTimeType->UTCDateTime.Date.Year, response.DateTimeType->UTCDateTime.Date.Month, response.DateTimeType->UTCDateTime.Date.Day, response.DateTimeType->UTCDateTime.Time.Hour, response.DateTimeType->UTCDateTime.Time.Minute, response.DateTimeType->UTCDateTime.Time.Second); }else{ soap_print_fault(stderr, soap); } soap_destroy(soap); soap_end(soap); soap_free(soap); return 0; } ``` 此段示范性代码展示了如何向指定URL发起获取系统时间的服务请求;实际应用中应当替换为真实的摄像头管理端点路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值