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协议家族设备已占据数字监控行业 ...
随机推荐
- 一文让你彻底理解SQL连接查询
表结构 内连接 笛卡尔积问题 普通内连接:inner join on 隐式内连接: 外连接 内连接与外连接查询的区别 内连接查询是查询两张表交集的数据,主外键关联的数据. 左连接查询是查询左表中的所有 ...
- Appium driver常用API
click driver.find_element implicitly_wait send_keys close quit get_window_size switch_to execute bac ...
- P4717-[模板]快速莫比乌斯/沃尔什变换(FMT/FWT)
正题 题目链接:https://www.luogu.com.cn/problem/P4717 题目大意 给出两个长度为\(2^n\)的数列\(A,B\)求 \[C_{n}=\sum_{i\ or\ j ...
- P4756-Added Sequence【斜率优化】
正题 题目链接:https://www.luogu.com.cn/problem/P4756 题目大意 给出序列\(a\),设\(f(l,r)=|\sum_{i=l}^ra_i|\). \(m\)次询 ...
- 揭秘:懂Python的测试员薪资到底有多高?
前言 面试的时候,面试官经常会问:会Python吗?有在工作中写过项目吗?会搭建自己的框架吗?我:恩,我只简单写过一些demo. 有时候问一些简单的Python,一问就会懵.比如:json和字典有什么 ...
- docker efk(filebeat+logstash+es+kibana)
1.系统架构 通常我们说的elastic stack,也就是elk,通过es 收集日志数据,存到elasticsearch,最后通过kibana进行统计分析,但是elastic公司后续又推出了 ...
- Centos7 配置JDK 提示 /lib/ld-linux.so.2: bad ELF interpreter: No such file or direct
解决办法:yum install glibc.i686
- 创建HTML文档
目录 创建HTML文档 构筑基本的文档结构 DOCTYPE元素 DOCTYPE元素 代码清单1 使用DOCTYPE元素 html元素 html元素 代码清单2 使用html元素 head元素 head ...
- git 修改最后一次提交
git 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,可以运行带有 --amend 选项的提交命令来重新提交:git commit --amend -m ...
- 【c++ Prime 学习笔记】第8章 IO库
C++语言不直接处理输入输出,而是通过标准库中的一组类来处理IO 1.2节介绍的IO库: istream(输入流)类型,提供输入 ostream(输出流)类型,提供输出 cin,是istream对象, ...