|
|
@@ -3585,5 +3585,253 @@ namespace DeviceCenter
|
|
|
[DllImport(@"HCNetSDK.dll")]
|
|
|
public static extern bool NET_DVR_CaptureJPEGPicture(int lUserID, int lChannel, ref CHCNetSDK.NET_DVR_JPEGPARA lpJpegPara, IntPtr sPicFileName);
|
|
|
#endregion
|
|
|
+
|
|
|
+ #region 门禁卡,指纹,人脸接口优化新增命令码及结构体
|
|
|
+ public const int NET_DVR_GET_CARD = 2560;
|
|
|
+ public const int NET_DVR_SET_CARD = 2561;
|
|
|
+ public const int NET_DVR_DEL_CARD = 2562;
|
|
|
+ public const int NET_DVR_GET_FINGERPRINT = 2563;
|
|
|
+ public const int NET_DVR_SET_FINGERPRINT = 2564;
|
|
|
+ public const int NET_DVR_DEL_FINGERPRINT = 2565;
|
|
|
+ public const int NET_DVR_GET_FACE = 2566;
|
|
|
+ public const int NET_DVR_SET_FACE = 2567;
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_CARD_COND
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ public uint dwCardNum; //card number, 0xffffffff means to get all card information when getting
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byRes = new byte[64];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_CARD_RECORD
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ public byte byCardType;
|
|
|
+ public byte byLeaderCard;
|
|
|
+ public byte byUserType;
|
|
|
+ public byte byRes1;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOOR_NUM_256, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byDoorRight;
|
|
|
+ public NET_DVR_VALID_PERIOD_CFG struValid;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_GROUP_NUM_128, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byBelongGroup;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = CARD_PASSWORD_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardPassword;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_DOOR_NUM_256, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public ushort[] wCardRightPlan;
|
|
|
+ public uint dwMaxSwipeTimes;
|
|
|
+ public uint dwSwipeTimes;
|
|
|
+ public uint dwEmployeeNo;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NAME_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byName;
|
|
|
+ //按位表示,0-无权限,1-有权限
|
|
|
+ //第0位表示:弱电报警
|
|
|
+ //第1位表示:开门提示音
|
|
|
+ //第2位表示:限制客卡
|
|
|
+ //第3位表示:通道
|
|
|
+ //第4位表示:反锁开门
|
|
|
+ //第5位表示:巡更功能
|
|
|
+ public uint dwCardRight;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 256, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byDoorRight = new byte[MAX_DOOR_NUM_256];
|
|
|
+ byBelongGroup = new byte[MAX_GROUP_NUM_128];
|
|
|
+ byCardPassword = new byte[CARD_PASSWORD_LEN];
|
|
|
+ wCardRightPlan = new ushort[MAX_DOOR_NUM_256];
|
|
|
+ byName = new byte[NAME_LEN];
|
|
|
+ byRes = new byte[256];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FINGERPRINT_COND
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ public uint dwFingerPrintNum; //the number send or get. if get,0xffffffff means all
|
|
|
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo;
|
|
|
+ public uint dwEnableReaderNo;
|
|
|
+ public byte byFingerPrintID;
|
|
|
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 131, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes = new byte[131];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FACE_COND
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ public uint dwFaceNum; //the number send or get. if get,0xffffffff means all
|
|
|
+ public uint dwEnableReaderNo;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 124, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes = new byte[124];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_CARD_SEND_DATA
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes = new byte[16];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FACE_RECORD
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ public uint dwFaceLen;
|
|
|
+ public IntPtr pFaceBuffer;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes = new byte[128];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_CARD_STATUS
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ public uint dwErrorCode;
|
|
|
+ public byte byStatus; //0-fail, 1-success
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 23, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes = new byte[23];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FACE_STATUS
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ERROR_MSG_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byErrorMsg; //下发错误信息,当byCardReaderRecvStatus为4时,表示已存在人脸对应的卡号
|
|
|
+ public uint dwReaderNo; //人脸读卡器编号,可用于下发错误返回
|
|
|
+ public byte byRecvStatus; //人脸读卡器状态,按字节表示,0-失败,1-成功,2-重试或人脸质量差,3-内存已满(人脸数据满),4-已存在该人脸,5-非法人脸ID
|
|
|
+ //,6-算法建模失败,7-未下发卡权限,8-未定义(保留),9-人眼间距小距小,10-图片数据长度小于1KB,11-图片格式不符(png/jpg/bmp),12-图片像素数量超过上限,13-图片像素数量低于下限,14-图片信息校验失败,15-图片解码失败,16-人脸检测失败,17-人脸评分失败
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 131, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byErrorMsg = new byte[ERROR_MSG_LEN];
|
|
|
+ byRes = new byte[131];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FINGERPRINT_RECORD
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //card No
|
|
|
+ public uint dwFingerPrintLen; //指纹数据长度
|
|
|
+ public uint dwEnableReaderNo; //需要下发指纹的读卡器编号
|
|
|
+ public byte byFingerPrintID; //手指编号,有效值范围为1-10
|
|
|
+ public byte byFingerType; //指纹类型 0-普通指纹,1-胁迫指纹
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 30, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes1;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_FINGER_PRINT_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byFingerData; //指纹数据内容
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 96, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byRes1 = new byte[30];
|
|
|
+ byFingerData = new byte[MAX_FINGER_PRINT_LEN];
|
|
|
+ byRes = new byte[96];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [StructLayoutAttribute(LayoutKind.Sequential)]
|
|
|
+ public struct NET_DVR_FINGERPRINT_STATUS
|
|
|
+ {
|
|
|
+ public uint dwSize;
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ACS_CARD_NO_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byCardNo; //指纹关联的卡号
|
|
|
+ public byte byCardReaderRecvStatus; //指纹读卡器状态,按字节表示,0-失败,1-成功,2-该指纹模组不在线,3-重试或指纹质量差,4-内存已满,5-已存在该指纹,6-已存在该指纹ID,7-非法指纹ID,8-该指纹模组无需配置
|
|
|
+ public byte byFingerPrintID; //手指编号,有效值范围为1-10
|
|
|
+ public byte byFingerType; //指纹类型 0-普通指纹,1-胁迫指纹
|
|
|
+ public byte byRecvStatus; //主机错误状态:0-成功,1-手指编号错误,2-指纹类型错误,3-卡号错误(卡号规格不符合设备要求),4-指纹未关联工号或卡号(工号或卡号字段为空),5-工号不存在,6-指纹数据长度为0,7-读卡器编号错误,8-工号错误
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ERROR_MSG_LEN, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byErrorMsg; //下发错误信息,当byCardReaderRecvStatus为5时,表示已存在指纹对应的卡号
|
|
|
+ public uint dwCardReaderNo; //当byCardReaderRecvStatus为5时,表示已存在指纹对应的指纹读卡器编号,可用于下发错误返回。0时表示无错误信息
|
|
|
+ [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.I1)]
|
|
|
+ public byte[] byRes;
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ byCardNo = new byte[ACS_CARD_NO_LEN];
|
|
|
+ byErrorMsg = new byte[ERROR_MSG_LEN];
|
|
|
+ byRes = new byte[20];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增接口一个
|
|
|
+ [DllImportAttribute(@"..\..\..\HCNetSDK\HCNetSDK.dll")]
|
|
|
+ public static extern int NET_DVR_SendWithRecvRemoteConfig(int lHandle, IntPtr lpInBuff, uint dwInBuffSize, IntPtr lpOutBuff, uint dwOutBuffSize, ref uint dwOutDataLen);
|
|
|
+
|
|
|
+ // 用户调用SendwithRecv接口时,接口返回的状态
|
|
|
+ public enum NET_SDK_SENDWITHRECV_STATUS
|
|
|
+ {
|
|
|
+ NET_SDK_CONFIG_STATUS_SUCCESS = 1000, // 成功读取到数据,客户端处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
|
|
|
+ NET_SDK_CONFIG_STATUS_NEEDWAIT, // 配置等待,客户端可重新NET_DVR_SendWithRecvRemoteConfig
|
|
|
+ NET_SDK_CONFIG_STATUS_FINISH, // 数据全部取完,此时客户端可调用NET_DVR_StopRemoteConfig结束
|
|
|
+ NET_SDK_CONFIG_STATUS_FAILED, // 配置失败,客户端可重新NET_DVR_SendWithRecvRemoteConfig
|
|
|
+ NET_SDK_CONFIG_STATUS_EXCEPTION, // 配置异常,此时客户端可调用NET_DVR_StopRemoteConfig结束
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|