C#批量设置海康和大华录像机NVR,GB28181的通道编码.

我经常要把小区海康或者大华的硬盘录像机推送到自己搭建的gb28181监控平台,每次几百个摄像头编码,有点头大,就用了1个多周写了个批量设置海康和大华硬盘录像机的通道编码的程序,海康和大华的SDK简直不是人看的. 太乱了.

大华读取通道编码的代码

        /// <summary>/// 获取通道编码id列表/// QQ : 771811549/// </summary>/// <returns>通道编码id列表</returns>public DataTable GetInputIDs(){DataTable dt = new DataTable();dt.Columns.Add("id", typeof(string));dt.Columns.Add("videoInputID", typeof(string));if (info.stuSipServerInfo[0].nChannelInfoNum > 0)// 释放内存{ Marshal.FreeHGlobal(info.stuSipServerInfo[0].pstuChannnelInfo); }info.stuSipServerInfo[0].nChannelInfoNum = (uint)m_DeviceInfo.nChanNum;//设置通道个数info.stuSipServerInfo[0].pstuChannnelInfo = Marshal.AllocHGlobal(channelInfoSize * m_DeviceInfo.nChanNum);//分配内存NETClient.CLIENT_GetConfig(m_LoginID, -1, ref info);//获取数据NET_SIP_SERVER_INFO ser = info.stuSipServerInfo[0];for (int j = 0; j < ser.nChannelInfoNum; j++){IntPtr currentPtr = new IntPtr(ser.pstuChannnelInfo.ToInt64() + (j * channelInfoSize));//获取数组偏移指针NET_CHANNEL_INFO channelInfo = (NET_CHANNEL_INFO)Marshal.PtrToStructure(currentPtr, typeof(NET_CHANNEL_INFO));//获取指针对象DataRow dr = dt.NewRow();dr["id"] = j + 1;//通道iddr["videoInputID"] = channelInfo.szID;//通道编号dt.Rows.Add(dr);}return dt;}

海康部分代码

public string XML透传(string Url, string Param = ""){CHCNetSDK.NET_DVR_XML_CONFIG_INPUT pInputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT(); //XML透传接口Int32 nInSize = Marshal.SizeOf(pInputXml);pInputXml.dwSize = (uint)nInSize;//设置大小string strRequestUrl = Url;//设置urluint dwRequestUrlLen = (uint)strRequestUrl.Length;//url长度pInputXml.lpRequestUrl = Marshal.StringToHGlobalAnsi(strRequestUrl);//请求信令pInputXml.dwRequestUrlLen = dwRequestUrlLen;//设置长度string strInputParam = Param;//设置参数pInputXml.lpInBuffer = Marshal.StringToHGlobalAnsi(strInputParam);//设置缓冲区pInputXml.dwInBufferSize = (uint)strInputParam.Length;//设置缓冲区大小CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT pOutputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();pOutputXml.dwSize = (uint)Marshal.SizeOf(pInputXml);//结构体大小pOutputXml.lpOutBuffer = Marshal.AllocHGlobal(3 * 1024 * 1024);//输出参数缓冲区pOutputXml.dwOutBufferSize = 3 * 1024 * 1024;//输出参数缓冲区大小pOutputXml.lpStatusBuffer = Marshal.AllocHGlobal(4096 * 4);//返回的状态参数pOutputXml.dwStatusSize = 4096 * 4; //状态缓冲区大小(内存大小) //透传if (!CHCNetSDK.NET_DVR_STDXMLConfig(m_lUserID, ref pInputXml, ref pOutputXml)){uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();//失败MessageBox.Show("错误号 = " + iLastErr);//XML透传失败,输出错误号}//获取输出uint iXMSize = pOutputXml.dwReturnedXMLSize;byte[] managedArray = new byte[iXMSize];Marshal.Copy(pOutputXml.lpOutBuffer, managedArray, 0, (int)iXMSize);string jg = Encoding.UTF8.GetString(managedArray);//释放资源Marshal.FreeHGlobal(pInputXml.lpRequestUrl);Marshal.FreeHGlobal(pOutputXml.lpOutBuffer);Marshal.FreeHGlobal(pOutputXml.lpStatusBuffer);return jg;}

软件截图:

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

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

相关文章

Pycharm的基础使用

Pycharm的基础使用 一、修改主题 第一步&#xff1a;点击file->settings 第二步&#xff1a;找到Appearance&Behavior->Appearance->Theme选择主题 有五种主题可以选 二、修改默认字体和大小 第一步&#xff1a;打开设置与上面修改主题第一步一样&#xff1b…

Red Hat Ansible Automation Platform架构

目录 示例架构&#xff1a;一、Ansible Automation Platform 实现流程详解1. 自动化控制器 (Automation Controller)2. 自动化网格 (Automation Mesh)3. 私有自动化中心 (Private Automation Hub)4. Event-Driven Ansible 控制器5. 数据存储 (PostgreSQL 数据库) 二、实现流程1…

leetcode498 对角线遍历

题目 给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 示例 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,4,7,5,3,6,8,9] 解析 本题目主要考察的就是模拟法&#xff0c;首…

硬盘格式化NTFS好还是exFAT好 U盘存储文件用哪个格式好? 硬盘用exfat还是ntfs mac不能读取移动硬盘怎么解决

在计算机世界中&#xff0c;文件系统是数据管理的基石&#xff0c;而NTFS和exFAT无疑是这块基石上的两大巨头。它们各自拥有独特的特点和优势&#xff0c;并在不同的使用场景中发挥着重要作用。 什么是文件系统 文件系统提供了组织驱动器的方法。它规定了如何在驱动器上存储数…

外卖APP开发详解:从同城O2O系统源码开始

近期&#xff0c;从事软件开发的小伙伴们都在讨论外卖APP&#xff0c;热度非常之高&#xff0c;所以小编今天将与大家一同探讨同城O2O系统源码、外卖APP开发。 一、外卖APP开发的前期准备 了解目标用户的需求&#xff0c;分析竞争对手的优劣势&#xff0c;明确自身的市场定位。…

揭示西周与汉唐时期的纺织工艺

在中国新疆这片充满神秘色彩的土地上&#xff0c;每一次的考古发掘都仿佛是对历史的一次深情回望&#xff0c;揭示出中华民族悠久而灿烂的文明史。其中&#xff0c;新疆出土的西周和汉唐时期的织物&#xff0c;更是以其精美绝伦的工艺和独特的审美风格&#xff0c;让我们对古代…

Docker部署常见应用之桌面版系统ubuntu-desktop

文章目录 ubuntu-desktop 简介ubuntu-desktop 部署参考文章 ubuntu-desktop 简介 colinchang/ubuntu-desktop 是一个Docker镜像&#xff0c;基于KasmWeb⁠的 Ubuntu 22.04 桌面版&#xff08;Web&#xff09; Docker Image。镜像替换了阿里云Ubuntu Jammy镜像源&#xff0c;安…

六西格玛培训新选择,老字号品质有保障!

在追求企业卓越与完美的道路上&#xff0c;六西格玛管理无疑是一个被广泛认可与采纳的方法论。六西格玛不仅仅是一种管理策略&#xff0c;更是一种文化和哲学&#xff0c;它强调通过数据驱动和持续改进来减少流程中的缺陷&#xff0c;提升客户满意度&#xff0c;并最终实现企业…

HTML5基本语法

文章目录 HTML5基本语法一、基础标签1、分级标题2、段标签3、换行及水平线标签4、文本格式标签 二、图片标签1、格式2、属性介绍 三、音频标签1、格式2、属性介绍 四、视频标签1、格式2、属性介绍 五、链接标签1、格式2、显示特点3、属性介绍4、补充&#xff08;空链接&#xf…

PHP杂货铺家庭在线记账理财管理系统源码

家庭在线记帐理财系统&#xff0c;让你对自己的开支了如指掌&#xff0c;图形化界面操作更简单&#xff0c;非常适合家庭理财、记账&#xff0c;系统界面简洁优美&#xff0c;操作直观简单&#xff0c;非常容易上手。 安装说明&#xff1a; 1、上传到网站根目录 2、用phpMyad…

经常混淆的ADC输入类型!

大家好,这里是大话硬件。 这篇文章我们来聊聊ADC的输入类型。 ADC的输入类型根据ADI的官网,分为了3种类型,单端,差分,伪差分。如下图快速选型的界面所示。 同时,TI的官网对ADC的输入类型划分也是同样的3种类型。 可见,两个器件厂家对ADC的输入类型都是这样定义的。 …

基于六自由度并联机构设计并制作了六轴传感和被动柔化的柔性连杆可以测量六轴力,扭矩和位移与被动柔度

在现代制造业中&#xff0c;机器人装配扮演着越来越重要的角色。然而&#xff0c;实现高精度和高效率的机器人装配仍然是一个重大挑战。装配过程中的力和位移的测量与补偿是关键因素&#xff0c;因为它们直接影响装配的质量和成功率。传统的力/扭矩传感器和位移传感器系统在精度…

MySQL事务的ACID四大特性以及实践问题

文章目录 事务演示基本操作操作方式二 四大特性ACID并发事务存在的问题并发事务隔离级别实现事务的原理事务的重要性 事务是逻辑上一组操作的集合&#xff0c;事务会把所有操作作为一个整体一起向系统 提交 或 撤销 操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么…

SpringBoot 实现 阿里云语音通知(SingleCallByTts)

目录 一、准备工作1.开通 阿里云语音服务2.申请企业资质3.创建语音通知模板&#xff0c;审核通过4.调用API接口---SingleCallByTts5.调试API接口---SingleCallByTts 二、代码实现1.导入依赖 com.aliyun:aliyun-java-sdk-dyvmsapi:3.0.22.创建工具类&#xff0c;用于发送语音通知…

HTML静态网页成品作业(HTML+CSS+JS)——我的家乡福州介绍网页(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码实现图片轮播&#xff0c;共有3个页面。 二、作品…

【DevOps】 什么是容器 - 一种全新的软件部署方式

目录 引言 一、什么是容器 二、容器的工作原理 三、容器的主要特性 四、容器技术带来的变革 五、容器技术的主要应用场景 六、容器技术的主要挑战 七、容器技术的发展趋势 引言 在过去的几十年里,软件行业经历了飞速的发展。从最初的大型机时代,到后来的个人电脑时代,…

基于SpringBoot+Vue会所产后护理系统设计和实现

基于SpringBootVue会所产后护理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#…

C++及cmake语法介绍

c/cmake学习 文章目录 c/cmake学习1. c1.1 基本模型1.1.1 for循环1.1.2 main函数1.1.2 带参数函数编译函数 2. CMAKE2.1 相关命令2.1.1 编译基本命令2.1.2 动态库静态库编译2.1.3 消息输出2.1.4 cmake变量常见参数1. 设置构建类型2. 设置编译器标志3. 指定编译器4. 设置安装路径…

Java开发笔记Ⅲ (一些零碎记录)

一些报错处理 找不到注入的对象 可以在 dao 层 的接口上添加 Repository 注解 common 模块报错 Unable to find main class 由于common中只有一些常量与工具类&#xff0c;不需要主类&#xff0c;故出现该错误时只需删除pom文件中的build标签即可解决 网关模块报错 Failed…

MYSQL 四、mysql进阶 1(mysql逻辑架构以及查询流程)

一、mysql的逻辑架构 1. 逻辑架构剖析 1.1 服务器处理客户端请求 mysql是典型的c/s架构&#xff0c;即 client/server 架构&#xff0c;不论是客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果都是&#xff1a;客户端进程向服务器进程发送一段文本&am…