首页 > 其他分享 >海康威视SDK - 门禁admin用户密码设置

海康威视SDK - 门禁admin用户密码设置

时间:2023-05-25 09:22:30浏览次数:40  
标签:UnmanagedType 威视 admin byte -- NET SDK public DVR

门禁/报警主机获取用户信息

方法及参数

  1. 调用方法:NET_DVR_GetAlarmDeviceUser(userId, 1, ref NET_DVR_ALARM_DEVICE_USER);

    //HCNetSDK中声明类
    [DllImport(@"..\..\runtime\hk\HCNetSDK.dll")]
    public static extern bool NET_DVR_GetAlarmDeviceUser(int lUserID, int lUserIndex, ref NET_DVR_ALARM_DEVICE_USER lpDeviceUser);
    
    参数 说明
    lUserID 登录时返回的句柄
    lUserIndex 门禁的起始码是1;报警主机的起始码是0。设置错误时,错误码会现实11.
    lpDeviceUser NET_DVR_ALARM_DEVICE_USER 类,返回配置信息
    返回值 true为成功,false为失败
  2. 声明变量类:NET_DVR_ALARM_DEVICE_USER

    如果HCNetSDK.cs中不存在,需自己手动添加,添加时一定要参考HCNetSDK.h文件

    [StructLayoutAttribute(LayoutKind.Sequential)]
    public struct NET_DVR_ALARM_DEVICE_USER
    {
        public Int64 dwSize;                 // 结构体大小
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
        public byte[] sUserName;    // 用户名
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
        public byte[] sPassword;    // 密码
        NET_DVR_IPADDR struUserIP;                    /* 用户IP地址(为0时表示允许任何地址) */
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)]
        public byte[] byMACAddr;            /* 物理地址 */
        public byte byUserType; // 0-普通用户(操作员) 1-管理员用户 2-安装员用户 3-制造商用户
        public byte byAlarmOnRight;         // 布防权限
        public byte byAlarmOffRight;        // 撤防权限
        public byte byBypassRight;          // 旁路权限
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_RIGHT, ArraySubType = UnmanagedType.I1)]
        public byte[] byOtherRight;  // 其他权限
        // 0 -- 日志权限
        // 1 -- 重启关机
        // 2 -- 参数设置权限
        // 3 -- 参数获取权限
        // 4 -- 恢复默认参数权限
        // 5 -- 警号输出权限
        // 6 -- PTZ 控制权限
        // 7 -- 远程升级权限
        // 8 -- 远程预览
        // 9 -- 远程手动录像
        // 10 -- 远程回放
        // 11 -- 消警
        // 12 -- 强制布防
        // 13 -- 永久旁路
        // 14 -- 添加更改个人授权代码
        // 15 -- 调试模式
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
        public byte[] byNetPreviewRight;    // 远程可以预览的通道,按位表示各通道(bit0-channel 1),1-有权限,0-无权限
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
        public byte[] byNetRecordRight;    // 远程可以录像的通道,按位表示各通道(bit0-channel 1),1-有权限,0-无权限
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
        public byte[] byNetPlaybackRight; // 远程可以回放的通道,按位表示各通道(bit0-channel 1),1-有权限,0-无权限
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I1)]
        public byte[] byNetPTZRight;        // 远程可以PTZ的通道,按位表示各通道(bit0-channel 1),1-有权限,0-无权限
        //BYTE    byPriority;                                        // 优先级,0xff-无,0--低,1--中,2--高
        //无(表示不支持优先级的设置)
        //低(默认权限:包括远程回放,远程查看日志和状态,远程关机/重启)
        //中(包括远程控制云台,远程手动录像,远程回放,语音对讲和远程预览,本地备份,本地/远程关机/重启)
        //高(管理员)
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
        public byte[] sOriginalPassword;        // 原始密码
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = PASSWD_LEN, ArraySubType = UnmanagedType.I1)]
        public byte[] sKeypadPassword;        // 键盘密码
        public byte[] byUserEnabled;        // 用户是否开启使用:0-无效,1-开启,2-不开启
        [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 135, ArraySubType = UnmanagedType.I1)]
        public byte[] byRes2;                  // 保留字节
    }
    

调用代码

uint error = 0;
// 声明NET_DVR_ALARM_DEVICE_USER变量
CHCNetSDK.NET_DVR_ALARM_DEVICE_USER alarmDeviceUser = new CHCNetSDK.NET_DVR_ALARM_DEVICE_USER();
// 调用获取配置信息方法
if(CHCNetSDK.NET_DVR_GetAlarmDeviceUser(userId, 1, ref alarmDeviceUser)){
	//返回成功
}else{
	//查看错误码
	error = CHCNetSDK.NET_DVR_GetLastError();
}

门禁/报警主机设置密码

方法及参数

  1. 使用方法

    1. CHCNetSDK.NET_DVR_GetAlarmDeviceUser同上

    2. NET_DVR_SetAlarmDeviceUser(userId, 1, ref alarmDeviceUser)

      [DllImport(@"..\..\runtime\hk\HCNetSDK.dll")]
      public static extern bool NET_DVR_SetAlarmDeviceUser(int lUserID, int lUserIndex, ref NET_DVR_ALARM_DEVICE_USER lpDeviceUser);
      
      参数 说明
      lUserID 登录时返回的句柄
      lUserIndex 门禁:admin默认为1
      报警主机:默认从0开始
      lpDeviceUser 需要设置的用户参数
      返回值 true为成功,false为失败

步骤:

通过NET_DVR_GetAlarmDeviceUser方法获得用户参数后,将密码和原始密码分别赋值给sPassword和sOriginalPassword,然后调用NET_DVR_SetAlarmDeviceUser方法即可。

注意:返回的sPassword参数为空,是无法获得到密码的

代码实现:

// 门禁设置密码
CHCNetSDK.NET_DVR_ALARM_DEVICE_USER alarmDeviceUser = new CHCNetSDK.NET_DVR_ALARM_DEVICE_USER();
// 调用获取配置信息方法
CHCNetSDK.NET_DVR_GetAlarmDeviceUser(userId, 1, ref alarmDeviceUser);
// 设置新密码
Encoding.UTF8.GetBytes("a7777777").CopyTo(alarmDeviceUser.sPassword, 0);
// 原始密码
Encoding.UTF8.GetBytes("a88888888").CopyTo(alarmDeviceUser.sOriginalPassword, 0);
bool b = CHCNetSDK.NET_DVR_SetAlarmDeviceUser(userId, 1, ref alarmDeviceUser);
uint error = CHCNetSDK.NET_DVR_GetLastError();

当出现错误码为11时,请注意是否为struct类型中设置的变量长度不对,例如sUserName的长度应设置为32,而自己设置成了64。

具体数值请参考:SDK中头文件夹的HCNetSDK.h文件。

标签:UnmanagedType,威视,admin,byte,--,NET,SDK,public,DVR
From: https://www.cnblogs.com/wanghun315/p/17430181.html

相关文章

  • 宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
    宝塔面板登录phpMyAdmin提示服务器和客户端上指示的HTTPS之间不匹配https://www.niuqi360.com/btpanel/mismatch-between-https-indicated-on-server-and-client/......
  • fastadmin 只允许在开发环境下执行命令
      解决1、设置文件[…\fastadmin\application\config.php]中的app_debug为true即可。//应用调试模式//'app_debug'=>Env::get('app.debug',false),//在线命令提示:只允许在开发环境下执行命令'app_debug'=>Env::get(&......
  • LinuxMint 安装 .NET 7 发生No SDKs were found.
    一、环境LinuxMint21.1二、安装方式1.通过系统软件管理器,搜索DotNetSDK安装.net7SDK2.dotnet--info查看.net信息,提示.NETSDKsInstalled:NoSDKswerefound.  3.查看安装程序(1)/usr/lib/dotnet检查/usr/lib/dotnet中,是否存在sdk,sdk-manifests,templates目录?(2)/us......
  • 直播和短视频美颜sdk的开发流程、代码分析
    目前,美颜技术是提高视频质量的重要手段之一,特别是短视频和直播两个行业。本文将介绍其开发流程和代码分析。 一、美颜SDK的开发流程1.需求分析首先我们需要明确的一点就是“需求”,例如:美颜效果、美颜程度、性能要求等。同时,我们需要考虑到不同的设备和网络环境,保证SDK的兼容性和稳......
  • IDEA配置jdk(或者IDEA代码报错The SDK is not specified for module)
    参考:https://blog.csdn.net/mask_boys/article/details/117385087今天敲代码时,出现一个错误,那就是TheSDKisnotspecifiedfor module,意思是没有为模块添加SDK,所以会出现如下错误 如何解决这个问题呢:首先:file-》projectStructure 然后 点击下划选项,然后就可以添加......
  • SQLite3 客户端程序,Win32 SDK ,C/C++
    1 WIn32SDK程序,尽量放在一个文件中,主要用到Tree,ListView,Edit控件。2 把控件封装成类,但不封装窗口回调函数。类实例为全局变量,方便消息回调函数调用执行。这样做最简单。3 Edit控件处理按键输入,模仿shell执行SQL查询4打开数据库文件时若没有此文件则新建,否则打开,打开......
  • kubernetes部署Open-LDAP、Go-admin-ldap
    1.搭建openLDAP1.1.创建命名空间kubectlcreatenamespacekube-ops1.2.创建pvc存储使用的是nfs方式挂载,storageClassName为默认,所以可写可不写。mkdir-p~/ldap;cd~/ldapcat>pvc.yaml<<EOFapiVersion:v1kind:PersistentVolumeClaimmetadata:name:ldap-dat......
  • Linux 安装已下载的 dotnet-sdk-6.0
    1.下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet 2.用工具 FileZilla(类似FTP功能)上传到Linux系统(用root登录) 3.用工具 Xshell7(类似Cmd功能) (用root登录)3.1切换到上传的目录下:  cd /root/下载3.2创建安装目录:     ......
  • boot-admin 项目数据库缺省字段设计之最佳实践
    数据库(Database)中的缺省字段(也称为默认字段),就是在一般情况下,每个数据表(Table)必须包含的字段(Field),这类字段用于满足特定的数据需求,字段值的填充或更改一般遵照一定的逻辑要求。缺省字段的设计应该考虑到数据的完整性和一致性,以确保数据的正确与可靠,设计合理的表字段对于数据的有效......
  • Sonarqube---You're not authorized to run analysis. Please contact the project ad
    问题:sonarqube执行时报错:You'renotauthorizedtorunanalysis.Pleasecontacttheprojectadministrator原因:项目开始执行是好的,因为需要做项目的权限控制,所以将project从public修改为private后,再执行就报You'renotauthorizedtorunanalysis.Pleasecontacttheproject......