Onvif协议5: 预置位的操作

news2024/10/4 23:20:17

目录

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.coloradmin.cn/o/1418626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CH395Q之CH395Q简介(一)

本节主要介绍以下内容: 1、TCP/IP协议栈是什么(了解) 2、CH395Q是什么(了解) 3、CH395Q工作命令(熟悉) 4、CH395Q & W5500 一、TCP/IP协议栈是什么 是一系列网络协议的总和&#xff0…

如何使用宝塔面板搭建MySQL 5.5数据库并实现公网远程连接

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

微信小程序|摇骰子

目录 简介设计与功能需求确定用户界面设计确定摇骰子动画效果确定随机数生成算法编码实现实现摇骰子动画测试与优化进行功能测试进行性能测试说明简介 制作一个摇骰子小程序是一个有趣且具有挑战性的项目。通过这个项目,你可以学习如何运用编程技术来模拟骰子的摇动和结果显示…

【全程录屏GPT3.5升级4.0】2024最新GPT4升级订阅详细指南

前言:为什么要升级GPT4.0,下图是来自GPT4.0的官方回答,可以看出,GPT4无愧于是一个大版本升级的。 一、视频教程 记录了普通用户使用WildCrad从GPT3.5升级到4.0的全部过程,感兴趣可以前往观看:https://www.…

qemu 抓取linux kernel vmcore

一、背景 在qemu调试linux kernel时 有时我们会遇到dump 情况,这时可以通过gdb 方式连接分析dump, 但实际中我们用得更多的是离线dump 分析,分析的文件通常是vmcore(linux kernel panic 生成的coredump文件)或者ramdu…

合并有序链表---链表OJ---归并思想

https://leetcode.cn/problems/merge-two-sorted-lists/?envTypestudy-plan-v2&envIdtop-100-liked 将两个有序的链表合并为一个新的有序链表,那不就是和归并排序中最后合并的思想一样吗?只不过那里合并的是数组,这里合并的是链表。 首先…

构建知识图谱:从技术到实战的完整指南

目录 一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图数据库选择Neo4jArangoDB 构建流程数据预处理实体关系识别图…

C++类和对象引入以及类的介绍使用

文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储…

[嵌入式系统-5]:龙芯1B 开发学习套件 -2- LoongIDE 集成开发环境集成开发环境的安装步骤

目录 一、LoongIDE(龙芯开发工具集成环境)概述 1.1 概述 二、软件开发环境的安装过程 2.0 注意事项 2.1 步骤1:MingW运行环境 2.2 步骤2:安装LoongIDE 2.3 步骤3:安装MIPS工具链 2.4 配置工具链 2.5 重启电脑…

做什么副业比较靠谱,这五个正规项目,记得收藏

人这一生不易,每个阶段都会有压力和烦恼,尤其是成年人,上有老下有小的,生活的重担都在一个人身上,压得人喘不过气。生活的方方面面都需要钱,仅靠工资已经很难维持一家人的开支了。所以很多人打算利用业余时…

基于YOLOv7算法和FLIR数据集的高精度实时红外行人目标检测系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法和FLIR数据集的高精度实时红外行人目标检测系统可用于日常生活中检测与定位自行车、汽车、狗和行人目标,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本…

Alexa Fluo350 NHS 酯,AF350活性酯,可用于标记胺修饰的寡核苷酸

您好,欢迎来到新研之家 文章关键词:AF350 Succinimidyl Ester,AF350 NHS Ester,Alexa Fluo350 NHS 酯,AF350活性酯 一、基本信息 产品简介:AF 350 is a blue fluorescent dye. AF 350 dye is used for s…

NPDP证书:让你的职业生涯飞升!

🌟没错!NPDP证书正在成为产品经理们的“新宠”!越来越多的同行们纷纷选择考取NPDP证书,为什么这么火爆?一起来探究下吧! 🚀NPDP认证:产品经理的国际通行证 📍NPDP&#x…

雪深传感器的工作原理

TH-XL2雪深传感器的工作原理主要是利用超声波的发射和反射来测量雪的厚度。传感器发射超声波,超声波遇到雪表面后会反射回来,传感器再接收反射回来的超声波,通过计算超声波的传播时间和速度,就可以得出雪的厚度。 另外&#xff0c…

给信息安全专业想做网络安全方面的人一些忠告

别一直打CTF 打CTF是为了打基础,大概知道一些基础就出来吧,千万不要一直打下去出不来了。简历上实习经历,项目经历以及漏洞成果才能构成一个不错的背景,只有ctf比赛会很尴尬。要知道有些人是py打比赛,面试官知道情况&…

根据两个主键查询变更日志 抽屉时间线降序

时间戳例子&#xff1a; <div class"block"><el-timeline><el-timeline-item timestamp"2018/4/12" placement"top"><el-card><h4>更新 Github 模板</h4><p>王小虎 提交于 2018/4/12 20:46</p>…

SimpleDateFormat 格式化 Date 时间戳

前言 Date 是 Java 中经常用来表示时间的类型&#xff0c;但将 Date 类型的数据发送给前端时&#xff0c;通常会呈现出乱码的状态&#xff0c;用户不宜理解&#xff0c;所以要通过 SimpleDateFormat 把 Date 类型的数据格式化为用户容易理解的格式 如下是 Date 的格式&#xff…

GIS应用水平考试一级—2009 年度第二次

全国信息化工程师——GIS应用水平考试 2009 年度第二次全国统一考试一级 试卷说明: 1、本试卷共9页,6个大题,满分150 分,150 分钟完卷。 2、考试方式为闭卷考试。 3、将第一、二、三題的答案用铅笔涂写到(NCIE-GIS)答题卡上。 4、将第四、五、六题的答案填写到主观题答题卡上…

ARP 地址解析协议

目录 ARP&#xff08;Address Resolution Protocol&#xff09; 地址解析协议 ARP 的作用 ARP 高速缓存 (ARP cache) ARP 工作过程 ARP 查找 IP 地址对应的 MAC地址 ARP 高速缓存的作用 不在同一局域网的两个主机运行ARP协议 使用 ARP 的四种典型情况 为什么要使用两种…

vcomp140.dll缺失的多种处理方法,教你4种方法修复vcomp140.dll

"vcomp140.dll缺失"是一个在电脑使用过程中较为普遍遇到的错误情况&#xff0c;这个问题可能会阻止许多程序的正常启动。vcomp140.dll是一个属于 Visual C Redistributable for Visual Studio 2015 的文件&#xff0c;对于运行那些基于 Visual Studio 2015 创建的应用…