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协议家族设备已占据数字监控行业 ...
随机推荐
- Shell系列(11)- 位置参数变量(4)
作用 往shell脚本里面传递参数 位置参数变量 作用 $n n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10} $* 这个变量代表命令行中 ...
- IDL使用
出错的问题,可能是因为路径,或者没有建立工程文件. 运行IDL并在preferences项里修改设置(如图中红框所示) (IDL 8.4中在) 2, 中文字符显示乱码,改为gb2312
- if 条件
返回不能被2整除的数 result = [] iter = range(10) for i in iter: if i % 2: print(f'{i}', i % 2) result.append( ...
- Monte-carlo-simulation
https://towardsdatascience.com/how-to-use-monte-carlo-simulation-to-help-decision-making-a0a164bc861 ...
- 如何借助 JuiceFS 为 AI 模型训练提速 7 倍
背景 海量且优质的数据集是一个好的 AI 模型的基石之一,如何存储.管理这些数据集,以及在模型训练时提升 I/O 效率一直都是 AI 平台工程师和算法科学家特别关注的事情.不论是单机训练还是分布式训练 ...
- JVM-直接内存(Direct Memory)
1.直接内存概述 直接内存不是虚拟机运行时数据区的一部分,也不是<Java虚拟机规范>中定义的内存区域. 直接内存是在Java堆外的,直接向系统申请的内存区间. 来源于NIO,通过存在堆中 ...
- PyTorch模型读写、参数初始化、Finetune
使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...
- 看动画学算法之:平衡二叉搜索树AVL Tree
目录 简介 AVL的特性 AVL的构建 AVL的搜索 AVL的插入 AVL的删除 简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜 ...
- 深入理解Java虚拟机之垃圾回收篇
垃圾回收简介 Java 会对内存进行自动分配与回收管理,使上层业务更加安全,方便地使用内存实现程序逻辑.在不同的 JVM 实现及不同的回收机制中,堆内存的划分方式是不一样的. 简要地介绍下垃圾 ...
- 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...