当前位置: 首页 > news >正文

java springboot mqtt控制海康摄像头

GHHKControlService 接口
package org.gh.ghhk.service;public interface GHHKControlService {boolean monitorControl(String payload);}

GHHKControlServiceImpl  实现类

​
package org.gh.ghhk.service.impl;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.jna.NativeLong;
import lombok.RequiredArgsConstructor;
import org.gh.ghhk.net.HCNetSDK;
import org.gh.ghhk.service.GHHKControlService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;@RequiredArgsConstructor
@Service
public class GHHKControlServiceImpl implements GHHKControlService {private static final String MONITORIP = "monitorIp";private static final String MONITORCONTROLPORT = "monitorControlPort";private static final String MONITORUSERNAME = "monitorUserName";private static final String MONITORPASSWORD = "monitorPassWord";private static final String DIR = "dir";private static final String SPEED = "speed";private static final String DATA = "data";private static final String ACTIONS = "actions";private static final Logger log = LoggerFactory.getLogger(GHHKControlServiceImpl.class);@Overridepublic boolean monitorControl(String payload) {try {JSONObject jsonObject = JSONObject.parseObject(payload);JSONObject dastaJsonObject = jsonObject.getJSONObject(DATA);JSONArray actionsJsonArray = dastaJsonObject.getJSONArray(ACTIONS);for (int i = 0; i < actionsJsonArray.size(); i++) {JSONObject actionJsonObject = actionsJsonArray.getJSONObject(i);String monitorIp = actionJsonObject.getString(MONITORIP);Short monitorControlPort = actionJsonObject.getShort(MONITORCONTROLPORT);String monitorUserName = actionJsonObject.getString(MONITORUSERNAME);String monitorPassword = actionJsonObject.getString(MONITORPASSWORD);int dir = actionJsonObject.getInteger(DIR);int speed = actionJsonObject.getInteger(SPEED);boolean result = this.processMonitorControl(monitorIp, monitorControlPort, monitorUserName, monitorPassword, dir, speed);if (!result) {// 如果某个操作失败,可以选择返回false或者继续执行return false;}}return true; // 如果所有操作都成功,返回true} catch (Exception e) {e.printStackTrace();return false;}}public boolean processMonitorControl(String monitorIp, Short monitorControlPort, String monitorUserName, String monitorPassword, Integer dir, int speed) throws InterruptedException {int lUserID;// 用户句柄int lPreviewHandle;// 预览句柄HCNetSDK.NET_DVR_CLIENTINFO m_strClientInfo;// 用户参数HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;log.info("加载完成");boolean bool = hCNetSDK.NET_DVR_Init();log.info("初始化结果:{}", bool);HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();lUserID = hCNetSDK.NET_DVR_Login_V30(monitorIp,monitorControlPort,monitorUserName,monitorPassword,m_strDeviceInfo);log.info("用户登录句柄:{}", lUserID);m_strClientInfo = new HCNetSDK.NET_DVR_CLIENTINFO();m_strClientInfo.lChannel = new NativeLong(1);lPreviewHandle = hCNetSDK.NET_DVR_RealPlay_V30(lUserID,m_strClientInfo, null, null, true);log.info("预览句柄:{}", lPreviewHandle);boolean isOK = hCNetSDK.NET_DVR_PTZControl(lPreviewHandle, dir, speed);log.info("控制结果:{}", isOK);Thread.sleep(1000);isOK = hCNetSDK.NET_DVR_PTZControl(lPreviewHandle, dir, 1);log.info("控制结果:{}", isOK);Thread.sleep(1000);isOK = hCNetSDK.NET_DVR_Logout(lUserID);log.info("控制结果:{}", isOK);isOK = hCNetSDK.NET_DVR_Cleanup();log.info("控制结果:{}", isOK);return true;}}​

订阅mqtt消息

    @Overridepublic void messageArrived(String topic, MqttMessage message) {String payload = new String(message.getPayload());ghhkControlService.monitorControl(payload);log.info("收到消息: {}", payload);}

这里注意 控制摄像头一定要释放 登出 要不然摄像头控制几次不受控制了

        isOK = hCNetSDK.NET_DVR_PTZControl(lPreviewHandle, dir, 1);log.info("控制结果:{}", isOK);Thread.sleep(1000);isOK = hCNetSDK.NET_DVR_Logout(lUserID);log.info("控制结果:{}", isOK);isOK = hCNetSDK.NET_DVR_Cleanup();log.info("控制结果:{}", isOK);

相关文章:

java springboot mqtt控制海康摄像头

GHHKControlService 接口 package org.gh.ghhk.service;public interface GHHKControlService {boolean monitorControl(String payload);}GHHKControlServiceImpl 实现类 ​ package org.gh.ghhk.service.impl;import com.alibaba.fastjson.JSONArray; import com.alibaba.…...

AI大模型02:Prompt Engineering 提示工程

一、什么是提示工程&#xff08;Prompt Engineering&#xff09; 1.提示工程&#xff0c;也叫“指令工程” &#xff08;1&#xff09;Prompt 就是我们给大模型发送的指令&#xff0c;或者说是在聊天对话框中发送的内容。 Prompt是AGI时代的编程语言。 Prompt是去控制大模型的…...

EasyExcel动态表头导出

1、封装方法 package com.skybird.iot.base.utils;import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.w…...

可视化基础的设计四大原则

一个好的数据可视化设计可以帮助观众迅速理解数据背后的意义。然而&#xff0c;如何确保我们的可视化设计既美观又简单易懂呢&#xff1f;本文将介绍四大设计原则——亲密原则、对比原则、对齐原则和重复原则。 1、 亲密原则&#xff08;Proximity&#xff09; 定义与应用&am…...

MySQL基础练习题27-上升的温度

目录 题目 准备数据 分析数据 总结 题目 找出与之前&#xff08;昨天的&#xff09;日期相比温度更高的所有日期的 id 。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Weather (id int, recordDate date, temperature int);#…...

只出现一次的数字 II

给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [2,2,3,2]…...

第十一章 数据仓库和商务智能 10分

11.1.0语境关系图 11.1 Q 建立数据仓库&#xff0c;有哪些步骤&#xff1f;如何建设&#xff1f;【6 个步骤非常重要&#xff01;必须知道】 1. 理解需求&#xff08;P&#xff09;&#xff08;目的明确&#xff0c;ETL&#xff09; (1) 考虑业务目标和业务战略。 (2) 确定业…...

一篇文章带你解析完整数据结构-----满满干活值得收藏

数据结构是计算机科学中的一个重要分支&#xff0c;它涉及到计算机存储、组织数据的方式。以下是数据结构的主要知识点&#xff1a; 基本概念 数据&#xff08;Data&#xff09;。数据元素&#xff08;Data Element)&#xff1a;数据项&#xff08;Data Item&#xff09;&…...

11.3 用Python处理常见文件

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...

Linux知识复习第2期

RHCE 远程登录服务-CSDN博客 Linux 用户和组管理_linux用户和组的管理-CSDN博客 Linux 文件权限详解-CSDN博客 目录 1、sshd 免密登录 (1)纯净实验环境 (2)生成密钥 (3)上锁 2、用户管理 (1)添加新用户 (2)删除用户 (3)修改用户信息 (4)为用户账号设…...

驗證HTTP代理的有效性的方法和步驟-okeyproxy

如何驗證HTTP代理的有效性&#xff0c;確保它的性能和安全性&#xff0c;是非常必要的。本文將詳細介紹驗證HTTP代理有效性的方法和步驟。 HTTP代理作為一種仲介伺服器&#xff0c;它可以幫助用戶在訪問目標網站時隱藏真實IP地址&#xff0c;從而提高匿名性和安全性。通過HTTP…...

Java和kotlin 反射机制

Java 反射机制详解 Java 反射机制是一种强大的工具&#xff0c;使得程序可以在运行时动态地获取类的信息&#xff0c;并且可以在运行时操作类的成员变量、方法和构造函数等。以下是 Java 反射的详细讲解&#xff0c;包括其原理、使用场景、优缺点以及如何使用反射。 1. 反射的…...

Linux Shell编程--数组

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除&#xff01; 一、简介 Shell 脚本中的数组允许你存储多个值&#xff0c;并可以通过索引访问它们。Shell 中的数组是一维的。 二、声明数组 在Shell…...

sheng的学习笔记-AI-k近邻学习(kNN)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 什么是k近邻学习 k近邻&#xff08;k-Nearest Neighbor&#xff0c;简称kNN&#xff09;学习是一种常用的监督学习方法&#xff0c;是一种基本的分类与回归方法。 分类问题&#xff1a;对新的样本&#xff0c;根据其 k 个…...

ShardingSphere之ShardingProxy集群部署

文章目录 介绍使用Zookeeper进行集群部署统一ShardingJDBC和ShardingProxy配置通过Zookeeper注册中心同步配置直接使用ShardingProxy提供的JDBC驱动读取配置文件 介绍 开发者手册 在conf/server.yaml配置文件中有下面这一段配置&#xff0c;就是关于集群部署的 mode: # typ…...

同态加密和SEAL库的介绍(六)BGV 方案

前面介绍 BFV 和 CKKS 加密方案&#xff0c;这两者更为常用。并且也解释了 Batch Encoder 和 级别的概念&#xff0c;这对接下来演示 BGV 会很有帮助。 一、BGV简介 BGV (Brakerski-Gentry-Vaikuntanathan) 方案 是一种基于环学习同态加密&#xff08;RLWE&#xff09;问题的加…...

uniapp微信小程序 canvas绘制圆形半透明阴影 createCircularGradient函数不支持透明度部分解决方案

背景 我需要在微信小程序中&#xff0c;用canvas绘制一个圆形钟表&#xff0c;在ui设计图中&#xff0c;有一部分阴影&#xff0c;这里我节选一下&#xff1a; 即深色发黑的部分 canvas通用阴影绘制 由于canvas中并不支持css那样简单的方式为圆形添加阴影或高光&#xff0c…...

W34KN3SS靶机

信息收集&#xff1a; 靶机地址&#xff1a;https://www.vulnhub.com/entry/w34kn3ss-1,270/# &#xff08;1&#xff09;ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:E8:66:AB &#xff08;2&#xff09;端口扫描 nmap -p- -A 192.168.254.145 &#xff08;3&…...

8.9套题

A. 猴猴吃苹果 题意&#xff1a;给定根节点k&#xff0c;求访问点的顺序&#xff0c;使得每次从上一个点到当前点的权值最大。访问过的点权值为0。权值一样时&#xff0c;输出最小编号 思路&#xff1a;由于是双向边&#xff0c;先求根节点到每一个节点的距离值。在第一轮中&…...

Python 爬取网页水务数据并实现智慧水务前端可视化

提示&#xff1a;本文爬取深圳市环境水务集团有限公司的公开数据作为数据样例进行数据分析与可视化。 文章目录 一、爬虫二、对爬取的数据进行数据库、excel的存储与数据处理1.代码实现 三、应用Flask框架将后端获取数据后渲染到前端四、前端Echarts的使用1.下载echarts.min.js…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...