ONVIF客户端中预置位设置代码实现过程
simpleOnvif的功能:提供支持Windows、Linux、arm、Android、iOS等各种平台的SDK库,方便集成,二次开发
之前跟大家分享了我们安徽思蔷信息科技的simpleOnvif的协议客户端的链接,以及部分开发过程。随后,有很多小伙伴咨询我,有关于simpleOnvif的客户端中预置位设置代码的实现过程。
百度云盘下载地址:链接:https://pan.baidu.com/s/1QxKr6kC0A_wS2eMK1u18jg提取码:ydi9
1.那我们先了解云台预置位的功能
云台预置位设置是球机控制中一个重要的命令,调用ONVIF协议中云台预置位设置接口。
2.注意事项
对应预置位名称的入参可以根据情况输入,字符编码必须是UTF-8格式,只是此时不给输入参数token赋值,因为当设置一个新的云台预置位时,Onvif服务端会返回一个预置位的token,如果我们需要调用这个设置的预置位时则需要使用服务端返回的这个token。 注意:如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权。
3.simpleOnvif具体代码
bool OnvifService::SetPreset(const std::string& presetName, const std::string& presetToken, const std::string& host, const std::string& username, const std::string& password, const std::string& deviceUrl)
{
bool ret = false;
ONVIF_DEVICE manualDevice;
ONVIF_DEVICE* device = getDevice(&manualDevice, host, username, password, deviceUrl);
if (!device || !device->profiles)
return false;
SetPreset_REQ req;
SetPreset_RES res;
memset(&req, 0, sizeof(req));
if (presetName.length() > 0)
{
req.PresetNameFlag = 1;
memcpy(req.PresetName, presetName.c_str(), ONVIF_NAME_LEN - 1 >= presetName.length() ? presetName.length() : ONVIF_NAME_LEN - 1);
}
printf("%s : PresetToken=%s, len=%d\n", __FUNCTION__, presetToken.c_str(), presetToken.length());
#if 1
if (presetToken.length() > 0)
{
req.PresetTokenFlag = 1;
strcpy(req.PresetToken, presetToken.c_str());
strcpy(req.ProfileToken, device->profiles->token);
}
else
{
strcpy(req.ProfileToken, device->profiles->token);
}
#else
strcpy(req.ProfileToken, device->profiles->token);
#endif
if (onvif_SetPreset(device, &req, &res))
{
ret = true;
printf("int %s Line:%d PresetName=%s, PresetToken=%s\n", __FUNCTION__,__LINE__, req.PresetName, res.PresetToken);
}
//printf("out %s Line:%d PresetName=%s, PresetToken=%s,local_ip = %d\n", __FUNCTION__, __LINE__, req.PresetName, res.PresetToken, manualDevice.local_ip);
if (manualDevice.local_ip != 0)
{
onvif_free_device(device);
}
return ret;
}
我们在接下来会陆续跟大家分享预置位的设置、预置位的调用、预置位的删除以及预置位的名称修改等,敬请等待。有感兴趣的朋友可以交流交流。
ONVIF客户端中预置位设置代码实现过程的更多相关文章
- VS2010或2012中,如何设置代码格式化?
ctrl + E,D菜单在 编辑-->高级 里面 第一个菜单项
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案中使用Onvif协议控制视频设备预置位转动
EasyNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位.预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便.之前我们说过如何用Onvif协议进行设备的发现, ...
- Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)
Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...
- Android Studio 中设置代码块自动补齐
AS中很多提示键,并不如Eclipse中做的好,需要我们自己去自定义.这里以switch...case为例,讲解一下如何设置代码自动补全. 1.进入settings --> Editor -- ...
- WCSTOMBS 函数不支持中文件的解决方法(设置代码页)
代码页没有进行设置.需要调用locale.h 中定义的一个函数设置默认的代码页 _tsetlocale(LC_ALL,_T(""));//设置代码页 wcstombs(sendB ...
- IIS 7.0、IIS 7.5 和 IIS 8.0 中的 HTTP 状态代码 转
http://support.microsoft.com/kb/943891/zh-cn 日志文件位置 默认情况下,IIS 7.0.IIS 7.5 和 IIS 8.0 将日志文件放在以下文件夹中: i ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
原文 http://blog.csdn.net/gubenpeiyuan/article/details/25618177 概要: 目前ONVIF协议家族设备已占据数字监控行业半壁江山以上,亲, ...
- 【视频开发】ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
转载地址:http://blog.csdn.net/gubenpeiyuan/article/details/25618177 概要: 目前ONVIF协议家族设备已占据数字监控行业 ...
随机推荐
- YOLO v3 & Pascal VOC数据集
代码地址:https://github.com/YunYang1994/tensorflow-yolov3 https://hackernoon.com/understanding-yolo-f5a7 ...
- javascript traverse object attributes 遍历对象属性
* for in for (var prop in o) { if (o.hasOwnProperty(prop)) { console.log(o[prop]); } } * Object keys ...
- 配置阿里云gradle
build.gradle buildscript { ext { springBootVersion = '1.5.15.BUILD-SNAPSHOT' } repositories { // mav ...
- openTSDB-采集器批量部署-tcollector
前提: 所需安装采集器服务器与部署服务器之间都已经配置无密码登录 1.安装服务器安装expect包 安装服务器与需要安装Tcollector服务器之间未配置无密登录需要此步. yum inst ...
- Spring技术内幕笔记2--我懒不写了哈哈哈哈。
目录 1.1 关于IOC容器设计的线路区别 1.1.1 BeanFactory 1.1.2 ApplicationContext 2.1 FileSystemXmlApplicationContext ...
- Dapr + .NET Core实战(十一)单机Dapr集群
如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 da ...
- electron-builder进行DEBUG输出的正确方式
前言 使用Electron进行打包通常会用到electron-builder或者electron-packager两种工具.在使用electron-builder的时候,由于对机制的不熟悉,我们在打包 ...
- iOS实现XMPP通讯(二)XMPP编程
项目概述 这是一个可以登录jabber账号,获取好友列表,并且能与好友进行聊天的项目. 使用的是第三方库XMPPFramework框架来实现XMPP通讯. 项目地址:XMPP-Project 项目准备 ...
- Unity——AssetBundle打包工具
Unity批量打AB包 为了资源热更新,Unity支持将所有资源打包成AssetBundle资源,存放在SteamingAssets文件夹中: 在项目发布之前,需要将所有资源打包成.ab文件,动态加载 ...
- 基于nginx实现私有yum仓库
基于本地光盘的源 server端IP:10.0.0.79 nginx使用默认路径.端口 yum install nginx -y #更改以root运行 sed -i '/^user/s/nginx/r ...