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协议家族设备已占据数字监控行业 ...
随机推荐
- javascript 定时器 timer setTimeout setInterval (js for循环如何等待几秒再循环)
实现一个打点计时器,要求1.从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12.返回的对象中需要包含一个 cance ...
- english note(6.10to6.16)
6.10 http://www.51voa.com/VOA_Special_English/blackbeard-s-ship-comes-to-the-us-supreme-court-82217_ ...
- P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】
正题 题目链接:https://www.luogu.com.cn/problem/P7295 题目大意 给出\(n*m\)的网格,每个格子上有字母,相同字母的四联通相邻格子为连通,每次询问一个子矩阵求 ...
- CF708E-Student‘s Camp【数学期望,dp】
正题 题目链接:https://www.luogu.com.cn/problem/CF708E 题目大意 有\(n*m\)的矩形网格,然后每次每行最左边和最右边的格子各有\(p=\frac{c}{d} ...
- Matrix Analysis and Application
Chap 1: Linear Equations and Matrix Linear equations Gaussian elimination Pivot; Triangularize; Back ...
- windows使用VS编译python源码
使用VS2021编译python源码 说明,使用VS2019也是可以的. 环境准备 对于VS2019首要要安装必要的环境 到python官网下载源码压缩包以及解压(红色箭头任选一个都行) 打开下载好的 ...
- TypeScript 条件类型精读与实践
在大多数程序中,我们必须根据输入做出决策.TypeScript 也不例外,使用条件类型可以描述输入类型与输出类型之间的关系. 本文同步首发在个人博客中,欢迎订阅.交流. 用于条件判断时的 extend ...
- Redis对象
概述 Redis并没有使用基础数据结构去实现键值数据库,而是基于数据结构封装了一个个对象. 类型和编码 由于Redis是键值数据库,所以每次存储数据时,至少包含两个对象,即K.V对应的对象.其数据结构 ...
- CefSharp请求资源拦截及自定义处理
CefSharp请求资源拦截及自定义处理 前言 在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理. 什么是资源 ...
- 前端必会的Javascript经典面试题
这是前端最基础的问题,也是在面试中难倒无数同学的经典问题 01. Javascript 数据类型 Javascript 数据类型 = 基本类型 + 引用类型 ES6 之前 5 + 1 = 6 种 ES ...