最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

今日快讯:海康威视SDK - 门禁admin用户密码设置

来源:博客园


(资料图)

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

方法及参数

  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.
    lpDeviceUserNET_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文件。

关键词: