IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity3d C#通过使用大华SDK控制大华摄像头旋转、变焦等云台操作和预置点等控制操作(含源码) -> 正文阅读

[游戏开发]Unity3d C#通过使用大华SDK控制大华摄像头旋转、变焦等云台操作和预置点等控制操作(含源码)

前言

本文的内容和在之前我写过Unity3d C# 接入海康威视摄像头SDK实现接口控制功能(如:控制云台)的文章基本类似,同样是通过官网提供的SDK进行开发,只不过针对的设备不同,和部分实现细节不同。但是也要看自己的设备是否支持某些操作,如枪机肯定不支持旋转等操作。

准备工作

下载SDK

首先是前往官网下载SDK(https://www.dahuatech.com/service/downloadlists/836.html),一般是选择windows平台的类似“设备网络SDK_CSharp_Win**”,因为Unity3d内使用,所以选择C#语言的。

目录

\libs 目录下全是库文件,dll动态链接库文件,开发工程需要引用的。

\Doc 是说明文档,如果开发过程中有不明白的可以打开“NetSDK_C#编程指导手册.pdf”进行搜索查看说明。

\Demos 这个目录全是Visual Studio的窗体程序,如果您是要进行C#的窗体程序开发,则不用往下看了,因为下面的内容是针对Unity3d开发的,你直接参考该目录下Demo进行开发即可。

Unity3d工程

首先需要将\libs下的文件复制一份放到工程的Plugins文件夹下,如果没有自建一个。
然后打开一个demo工程,将“NetSDKStruct.cs”、“NetSDK.cs”和“OriginalSDK.cs”脚本放到unity工程下,这些脚本是SDK接口入口脚本。

云台实现

云台控制整个完整的流程如下图:

在这里插入图片描述

下面就按步骤实现。

初始化

   m_ReConnectCallBack = new fHaveReConnectCallBack(ReConnectCallBack);
   bool isInited = NETClient.Init(m_DisConnectCallBack, IntPtr.Zero, null);
   NETClient.SetAutoReconnect(m_ReConnectCallBack, IntPtr.Zero);

以上是初始化了SDK,同时设置了自动重连的回调函数。

登录设备

       if (!isInited)
        {
            UnityEngine.Debug.Log("初始化失败!:" + NETClient.GetLastError());
        }
        else
        {
            UnityEngine.Debug.Log("初始化成功!");
            m_DeviceInfo = new NET_DEVICEINFO_Ex();
            m_LoginID = NETClient.LoginWithHighLevelSecurity(CamIP, CamPort, CamUser, CamPswd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref m_DeviceInfo);
            if (IntPtr.Zero == m_LoginID)
            {
                UnityEngine.Debug.Log("登录相机失败!:" + NETClient.GetLastError());
                return;
            }
            else
                UnityEngine.Debug.Log("登录相机成功!:" + m_LoginID);
          }

登录前判定初始化是否成功,登录时将IP、端口、账号和密码等传参接口进行登录,返回用户ID,这个需要保存,后续接口调用需要使用。

云台控制

接口主要参数如下图:

在这里插入图片描述

该接口参数EM_EXTPTZ_ControlType 操作类型有很多,请自行查看接口使用。


        bool ret = NETClient.PTZControl(m_LoginID, 0, type, param1, param2, 0, isStop, IntPtr.Zero);
        if (!ret)
        {
            UnityEngine.Debug.Log("云台控制失败:" + NETClient.GetLastError());
        }else
            UnityEngine.Debug.Log("云台控制:" + type.ToString()+(isStop?"结束":"开始"));

该接口就需要用到登录的返回结果m_LoginID(用户ID),其中isStop是在云台停止标志。对云台八方向操作及镜头操作命令有效,进 行其他操作时,本参数应填充false。如在右旋转( EM_EXTPTZ_ControlType.RIGHT_CONTROL)时,发送isStop是true,当要停止时需要调用接口发送isStop是false,如果不发false,没有其他命令时,它会一直旋转。

登出/注销

NETClient.Logout(m_LoginID);
m_LoginID = IntPtr.Zero;

只需传入m_LoginID即可.

释放SDK

NETClient.Cleanup();

这一步一定要调用,最好将Logout和Cleanup放OnApplicationQuit函数里判断后处理一次。

其他接口

其他接口可以参考文档或者NetSDK.cs脚本。

查询设备状态

public static bool QueryDevState(IntPtr lLoginID, EM_DEVICE_STATE nType, ref object obj, Type typeName, int waittime);

直接获取远程设备连接状态,每个通道单独获取。EM_DEVICE_STATE的类型有很多种,通过改变类型该接口可查询很多信息,如普通报警状态、录象状态、硬盘信息、SD卡信息、设备支持的接入平台、获取当前云台的预置点列表和刻录会话总数等。

远程抓图

public static bool SnapPictureEx(IntPtr lLoginID, NET_SNAP_PARAMS par, IntPtr reserved);

保存监视视频到文件

 public static bool SaveRealData(IntPtr lRealHandle, string pchFileName);

实时预览

public static IntPtr RealPlay(IntPtr lLoginID, int nChannelID, IntPtr hWnd, EM_RealPlayType rType = EM_RealPlayType.Realplay);

对接该接口可能需要额外操作,还是建议用播放直播流插件播放rtmp流的形式。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:34:29  更:2021-07-15 16:34:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:40:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码