Onvif协议5: 预置位的操作

目录

1. 介绍

2. GetPreset

3. SetPreset

4.预置位的索引

5. GotoPreset


1. 介绍

球机的云台预置位控制主要包含的内容有:预置位的设置、预置位的调用、预置位的删除以及预置位的名称修改等
云台预置位的设置:调用Onvif协议中云台预置位设置接口,对应预置位名称的入参可以根据情况输入,字符编码必须是UTF-8格式,只是此时不给输入参数token赋值,因为当设置一个新的云台预置位时,Onvif服务端会返回一个预置位的token,如果我们需要调用这个设置的预置位时则需要使用服务端返回的这个token。这个token关系到后面对于云台预置位的所有操作内容。

云台预置位的调用:如上面所说的,调用云台预置位时需要知道该预置位的token值。按照正常的规律,一般都是1、2、3等数值,一般和云台预置位列表对应,前提是云台预置位列表是按照顺序排列中间没有预置位被删除。

云台预置位的删除:同样删除预置位需要先前服务端返回的token,入参同样是需要删除预置位的token。

云台预置位的修改:根据wsdl生成的接口文件,预置位的修改入参需要有预置位修改后的名称已经对应的token值,这个token值同样是设置预置位返回的值,修改后的预置位名称如果是中文应该将字符编码转成UTF-8格式,否则会出现乱码。

其实通过前面的学习,onvif操作是比较简单的。调一下相应的接口即可。

2. GetPreset

获取请求有1个参数:ProfileToken。

首先获取ProfileToken

  _trt__GetProfiles         profiles;_trt__GetProfilesResponse profileresp;result =  soap1.GetProfiles(&profiles, profileresp);  if(result==401){http_da_save(&soap1,&daInfo, soap1.authrealm, User, Pass);		soap1.GetProfiles(&profiles, profileresp);			http_da_release(&soap1,&daInfo);}

然后根据结果,创建请求

  _tptz__GetPresets         GetPresetsReq;_tptz__GetPresetsResponse GetPresetsResp;GetPresetsReq.ProfileToken = profileresp.Profiles[0]->token;result = Ptz.GetPresets(&GetPresetsReq, GetPresetsResp);if(result==401){http_da_save(&Ptz,&daInfo, Ptz.authrealm, User, Pass);		Ptz.GetPresets(&GetPresetsReq, GetPresetsResp);		http_da_release(&Ptz,&daInfo);}

返回的GetPresetsResp,中的GetPresetsResp.Preset是个数组指针,GetPresetsResp.__sizePreset指明了有多少个preset。根据个数,遍历包含了哪些Name,Token。

3. SetPreset

REQUEST:

  • ProfileToken [tt:ReferenceToken]  Reference to an existing media profile.
  • PresetToken - optional [tt:ReferenceToken]  Optional existing preset token to update a preset position.
  • PresetName - optional [xs:string]  Optional name to be assigned to the preset position.
     

RESPONSE:

  • PresetToken [tt:ReferenceToken] Reference token assigned by the device to the preset.

创建和修改preset时,调用SetPreset。请求有3个参数:ProfileToken, PresetToken, PresetName。

同get操作相同,先获取ProfileToken,设置时,如果不指定PresetToken,会返回一个新的PresetToken,这就相当于创建新的preset。如果指定了PresetToken,那么该PresetToken,必须存在,否则将返回错误,这就是修改preset。PresetName随便定义,如果想用中文,那么要开启UTF8格式,方法是使能SOAP_C_UTFSTRING,如下。

  _tptz__SetPreset         SetPresetReq;_tptz__SetPresetResponse SetPresetResp;。。。soap_set_mode(&Ptz, SOAP_C_UTFSTRING);Ptz.SetPreset(&SetPresetReq, SetPresetResp);

 执行Ptz.SetPreset(&SetPresetReq, SetPresetResp);。
 

4.预置位的索引

这其实是个问题,onvif没有定义索引,这需要自己维护。onvif只靠PresetToken来管理相应的预置位,PresetToken值,基本上定义的是字符串“1”,“2”,“100”等。获取时是按token的数字排序的。如果满配置了预置位,那么索引号基本与token一致了。如果删除一个预置位,将会出现不匹配的问题。

好的办法就是,自己维护一个索引表。比如你的预置位索引号1,对应的presettoken是“5”,那么操作索引1时,查找到的token是5,那么操作token=5的就行了。

5. GotoPreset

  _tptz__GotoPreset         GotoPresetReq;_tptz__GotoPresetResponse GotoPresetResp;GotoPresetReq.ProfileToken = profileresp.Profiles[0]->token;GotoPresetReq.PresetToken  = token;Ptz.GotoPreset(&GotoPresetReq, GotoPresetResp);

参考:

Onvif协议2:使用wsdl生成onvif代码(wsse和digest鉴权)
https://blog.csdn.net/proing/article/details/135839214

Onvif协议1:gSOAP是什么
https://blog.csdn.net/proing/article/details/135827546

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439045.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款Linux、数据库、Redis、MongoDB统一管理平台!

官方演示 状态查看 ssh 终端 文件操作 数据库操作 sql 编辑器 在线增删改查数据 Redis 操作 Mongo 操作 系统管理 账号管理 角色管理 资源管理 一.安装 1.下载安装包 cd /opt wget https://gitee.com/dromara/mayfly-go/releases/download/v1.7.1/mayfly-go-linux-amd64.zi…

[GN] 设计模式——面向对象设计原则概述

文章目录 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 总结 提示:以下是本篇文章正文内容,下面案例可供参考 面向对象设计原则概述 单一职责原则 一个类只负责一个功能领域中的相应职责 类…

【C++杂货铺】详解类和对象 [中]

博主:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 类的6个默认成员函数 📁 构造函数 📂 概念 📂 特性(灰常重要) &#x1f4c…

粒子群算法求解港口泊位调度问题(MATLAB代码)

粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,它通过模拟鸟群或鱼群的行为来寻找最优解。在泊位调度问题中,目标是最小化所有船只在港时间的总和,而PSO算法可以帮助我们找到一…

The following untracked working tree files would be overwritten by merge问题的解决

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在更新git仓库时出现了一个The following untracked working tree files would be overwritten by merge的错误,具体如下图: 分析…

【智能家居入门之微信小程序控制下位机】(STM32、ONENET云平台、微信小程序、HTTP协议)

实现微信小程序控制单片机外设动作 一、使用ONENET可视化组件控制单片机外设动作二、使用微信小程序控制单片机外设动作三、总结 本篇博客话接上文: https://blog.csdn.net/m0_71523511/article/details/135892908 上一篇博客实现了微信小程序接收单片机上传的数据…

day31 贪心算法 分发饼干 摆动序列 最大子序和

题目1:455 分发饼干 题目链接: 455 分发饼干 题意 给孩子分发饼干,每个孩子最多只能有1块饼干 每个孩子i都有一个胃口值g[i] ,每块饼干j的尺寸是s[j] 如果s[j]>g[i]可以将这个饼干分配给孩子i 孩子就会得到满足&#xff…

【分布式技术专题】「探索高性能远程通信」基于Netty的分布式通信框架实现(Dispatcher和EventListener)(下)

基于Netty的分布式通信框架实现 前提介绍本节重点Dispatcher(分派调度器)EventListenerChannelEventListenerChannel通道事件定义ChannelActionEvent Heartbeat、超时及重连机制 前提介绍 经过阅读《【分布式技术专题】「探索高性能远程通信」基于Netty…

短视频矩阵项目年后还能做吗/技术源头搭建分析

短视频矩阵项目年后还能做吗/技术源头搭建分析: 问:矩阵系统年后还可以迭代更新开发继续做吗? 答:可以的,企业依旧有需求 问:如何考察技术团队? 答:以下三个方面 一、是否是抖音…

2024 新年HTML5+Canvas制作3D烟花特效(附源码)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向: Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

【计算机视觉(CV)技术的优势和挑战】

背景: 在当今数字时代,博客成为了分享知识、展示个人专业能力和吸引读者的重要工具。然而,随着越来越多的博客涌现,如何优化博客的内容和用户体验成为了一个关键的问题。计算机视觉(CV)技术是一种利用计算机…