Ejemplo n.º 1
0
        //private Boolean bFailedFaceInfo = false;

        private void btnAdd_Click(object sender, EventArgs e)
        {
            CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CFG();
            struFaceParamCfg.Init();
            UpdateFaceParamCfg(ref struFaceParamCfg);
            AddToFaceParamList(ref struFaceParamCfg);
        }
Ejemplo n.º 2
0
 private void OnMsgAddFaceParamCfgToList(ref Message m)
 {
     if (0 == m.LParam.ToInt64())
     {
         //bFailedFaceInfo = false;
         IntPtr lpCardCfg = (IntPtr)m.WParam.ToInt64();
         CHCNetSDK.NET_DVR_FACE_PARAM_CFG CardCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CFG();
         CardCfg = (CHCNetSDK.NET_DVR_FACE_PARAM_CFG)Marshal.PtrToStructure(lpCardCfg, typeof(CHCNetSDK.NET_DVR_FACE_PARAM_CFG));
         if (0 == CardCfg.dwSize)
         {
             return;
         }
         AddToFaceParamList(ref CardCfg);
         Marshal.FreeHGlobal(lpCardCfg);
     }
     else
     {
         //bFailedFaceInfo = true;
         IntPtr lpInfo = (IntPtr)m.WParam.ToInt64();
         CHCNetSDK.NET_DVR_FAILED_FACE_INFO pInfo = new CHCNetSDK.NET_DVR_FAILED_FACE_INFO();
         pInfo = (CHCNetSDK.NET_DVR_FAILED_FACE_INFO)Marshal.PtrToStructure(lpInfo, typeof(CHCNetSDK.NET_DVR_FAILED_FACE_INFO));
         if (0 == pInfo.dwSize)
         {
             return;
         }
         AddToList(ref pInfo);
         Marshal.FreeHGlobal(lpInfo);
     }
 }
Ejemplo n.º 3
0
        private void AddToFaceParamList(ref CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg)
        {
            listViewFaceConfig.BeginUpdate();
            ListViewItem item = new ListViewItem();

            item.Text = (++IndexOfListview).ToString();
            item.SubItems.Add(System.Text.Encoding.Default.GetString(struFaceParamCfg.byCardNo));
            item.SubItems.Add(System.Text.Encoding.Default.GetString(struFaceParamCfg.byRes));
            item.SubItems.Add(struFaceParamCfg.byFaceID.ToString());
            item.SubItems.Add(struFaceParamCfg.byFaceDataType.ToString());
            item.SubItems.Add("/");

            listViewFaceConfig.Items.Add(item);
            listViewFaceConfig.EndUpdate();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 发送长连接数据(人脸参数)
        /// </summary>
        /// <param name="hndStartRemoteConfig"></param>
        /// <param name="sCardNo"></param>
        /// <param name="bFacePic"></param>
        /// <returns></returns>
        public bool SendRemoteConfigForCardInsert(
            int hndStartRemoteConfig,
            string sCardNo,
            byte[] bFacePic)
        {
            bool ret      = false;
            uint dataType = (uint)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_INTELLIGENT_IDENTITY_DATA;

            //构建“人脸参数配置结构体”结构体 并转化为指针
            CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg = BuildFaceParamCfgStruct(sCardNo, bFacePic);
            int    struFaceParamCfgSize = Marshal.SizeOf(struFaceParamCfg);
            IntPtr ptrFaceParamCfg      = Marshal.AllocHGlobal(struFaceParamCfgSize);

            Marshal.StructureToPtr(struFaceParamCfg, ptrFaceParamCfg, false);
            ret = CHCNetSDK.NET_DVR_SendRemoteConfig(hndStartRemoteConfig, dataType, ptrFaceParamCfg, (uint)struFaceParamCfgSize);
            Marshal.FreeHGlobal(ptrFaceParamCfg);
            return(ret);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 构造“人脸参数配置结构体”
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="bFacePic"></param>
        /// <returns></returns>
        private CHCNetSDK.NET_DVR_FACE_PARAM_CFG BuildFaceParamCfgStruct(string sCardNo, byte[] bFacePic)
        {
            CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CFG();

            struFaceParamCfg.dwSize                = (uint)Marshal.SizeOf(struFaceParamCfg);
            struFaceParamCfg.byFaceID              = 1;
            struFaceParamCfg.byFaceDataType        = 1;
            struFaceParamCfg.byEnableCardReader    = new byte[CHCNetSDK.MAX_CARD_READER_NUM_512];
            struFaceParamCfg.byEnableCardReader[0] = 1;
            struFaceParamCfg.byCardNo              = new byte[CHCNetSDK.ACS_CARD_NO_LEN];
            byte[] byTempFaceCardNo = System.Text.Encoding.GetEncoding(PreSettings.charset).GetBytes(sCardNo);
            byTempFaceCardNo.CopyTo(struFaceParamCfg.byCardNo, 0);

            struFaceParamCfg.dwFaceLen   = (uint)bFacePic.Length;
            struFaceParamCfg.pFaceBuffer = Marshal.AllocHGlobal(bFacePic.Length);
            Marshal.Copy(bFacePic, 0, struFaceParamCfg.pFaceBuffer, bFacePic.Length);

            return(struFaceParamCfg);
        }
Ejemplo n.º 6
0
        void UpdateFaceParamCfg(ref CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg)
        {
            struFaceParamCfg.dwSize         = (uint)Marshal.SizeOf(struFaceParamCfg);
            struFaceParamCfg.byFaceDataType = (Byte)comboBoxDataType.SelectedIndex;
            StrToByteArray(ref struFaceParamCfg.byCardNo, textBoxAssociatedCardNo.Text);
            GetCardReaderIndex(ref struFaceParamCfg.byEnableCardReader);
            struFaceParamCfg.byFaceID = Convert.ToByte(textBoxFaceID.Text.ToString());
            StrToByteArray(ref struFaceParamCfg.byRes, textBoxFacePath.Text);

            LpArr.Add(struFaceParamCfg);

            if (0 == comboBoxDataType.SelectedIndex)
            {
                m_dwDataType = (int)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_SEND_DATA;
            }
            if (1 == comboBoxDataType.SelectedIndex)
            {
                m_dwDataType = (int)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_INTELLIGENT_IDENTITY_DATA;
            }
        }
Ejemplo n.º 7
0
        private void ProcessGetFaceParam(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData)
        {
            if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA)
            {
                CHCNetSDK.NET_DVR_FACE_PARAM_CFG lpCardCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CFG();
                lpCardCfg = (CHCNetSDK.NET_DVR_FACE_PARAM_CFG)Marshal.PtrToStructure(lpBuffer, typeof(CHCNetSDK.NET_DVR_FACE_PARAM_CFG));

                Boolean bSendOk = false;
                for (int i = 0; i < lpCardCfg.byEnableCardReader.Length; ++i)
                {
                    if (1 == lpCardCfg.byEnableCardReader[i])
                    {
                        bSendOk = true;
                        g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_SUCC_T, "GetFaceParam CardNo:" +
                                          System.Text.Encoding.UTF8.GetString(lpCardCfg.byCardNo).Trim('\0') + "CardReader:" + i);
                    }
                }

                if (false == bSendOk)
                {
                    g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "GetFaceParam Failed:" + System.Text.Encoding.UTF8.GetString(lpCardCfg.byCardNo).Trim('\0'));
                }

                string szExt = "dat";
                if (1 == lpCardCfg.byFaceDataType)
                {
                    szExt = "jpg";
                }

                string szPath   = null;
                string ByCardNo = System.Text.Encoding.UTF8.GetString(lpCardCfg.byCardNo).Trim('\0');
                szPath = "c:\\picture\\" + ByCardNo + "_" + lpCardCfg.byFaceID + "_facedata." + szExt;
                StrToByteArray(ref lpCardCfg.byRes, szPath);

                if (0 == lpCardCfg.dwFaceLen)
                {
                    return;
                }
                try
                {
                    using (FileStream fs = new FileStream(szPath, FileMode.Create))
                    {
                        int    Len = (int)lpCardCfg.dwFaceLen;
                        byte[] by  = new byte[Len];
                        Marshal.Copy(lpCardCfg.pFaceBuffer, by, 0, Len);
                        fs.Write(by, 0, Len);
                    }
                }
                catch (IOException ep)
                {
                    MessageBox.Show(ep.ToString(), "Error", MessageBoxButtons.OK);
                }

                int    dwSize       = (int)lpCardCfg.dwSize;
                IntPtr ptrlpCardCfg = Marshal.AllocHGlobal(dwSize);
                Marshal.StructureToPtr(lpCardCfg, ptrlpCardCfg, true);
                CHCNetSDK.PostMessage(pUserData, CHCNetSDK.WM_MSG_ADD_FACE_PARAM_TOLIST, (Int64)ptrlpCardCfg, 0);
            }
            else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS)
            {
                int dwStatus = Marshal.ReadInt32(lpBuffer);
                if (dwStatus == (int)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_SUCCESS)
                {
                    CHCNetSDK.PostMessage(pUserData, CHCNetSDK.WM_MSG_GET_FACE_PARAM_FINISH, 0, 0);
                }
                else if ((int)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED == dwStatus)
                {
                    int dwErrCode = 0;
                    if (8 == dwBufLen)
                    {
                        dwErrCode = Marshal.ReadInt32(lpBuffer + 1);
                    }
                    g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "GetFace STATUS_FAILED, Error code" + dwErrCode);
                }
            }
        }
Ejemplo n.º 8
0
        private Boolean SendFaceBinaryData()
        {
            m_lpNowSendFace = LpArr[m_dwSendIndex];
            string FilePath = System.Text.Encoding.Default.GetString(m_lpNowSendFace.byRes);
            string temp     = null;

            for (int i = 0; i < FilePath.Length; ++i)
            {
                if (FilePath[i] != '\0')
                {
                    temp += FilePath[i];
                }
            }
            FilePath = temp;

            if (!File.Exists(FilePath))
            {
                MessageBox.Show("The Path of pic doesn't exist", "Error", MessageBoxButtons.OK);
                return(false);
            }

            try
            {
                using (FileStream fs = new FileStream(FilePath, FileMode.Open))
                {
                    if (0 == fs.Length)
                    {
                        MessageBox.Show("The face picture is 0k,please input another picture!", "Error", MessageBoxButtons.OK);
                        return(false);
                    }
                    if (200 * 1024 < fs.Length)
                    {
                        MessageBox.Show("The face picture is larger than 200k,please input another picture!", "Error", MessageBoxButtons.OK);
                        return(false);
                    }

                    m_lpNowSendFace.dwFaceLen = (uint)fs.Length;
                    int    Length = (int)m_lpNowSendFace.dwFaceLen;
                    byte[] by     = new byte[Length];

                    m_lpNowSendFace.pFaceBuffer = Marshal.AllocHGlobal(Length);
                    fs.Read(by, 0, Length);
                    Marshal.Copy(by, 0, m_lpNowSendFace.pFaceBuffer, Length);
                    fs.Close();
                }
            }
            catch (IOException ep)
            {
                MessageBox.Show(ep.ToString(), "Error", MessageBoxButtons.OK);
            }

            uint   dwSize             = (uint)Marshal.SizeOf(m_lpNowSendFace);
            IntPtr ptrm_lpNowSendFace = Marshal.AllocHGlobal((int)dwSize);

            Marshal.StructureToPtr(m_lpNowSendFace, ptrm_lpNowSendFace, true);

            if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetFaceParamCfgHandle, (uint)m_dwDataType, ptrm_lpNowSendFace, dwSize))
            {
                g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "Send Fail,CardNo:" + System.Text.Encoding.UTF8.GetString(m_lpNowSendFace.byCardNo));
            }
            Marshal.FreeHGlobal(m_lpNowSendFace.pFaceBuffer);
            Marshal.FreeHGlobal(ptrm_lpNowSendFace);
            return(true);
        }
Ejemplo n.º 9
0
        private void buttonPut_Click(object sender, EventArgs e)
        {
            if (-1 != m_lSetFaceCfgHandle)
            {
                if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetFaceCfgHandle))
                {
                    m_lSetFaceCfgHandle = -1;
                }
            }
            CHCNetSDK.NET_DVR_FACE_PARAM_COND struCond = new CHCNetSDK.NET_DVR_FACE_PARAM_COND();
            struCond.dwSize                = (uint)Marshal.SizeOf(struCond);
            struCond.dwFaceNum             = 1;
            struCond.byFaceID              = 1;
            struCond.byEnableCardReader    = new byte[CHCNetSDK.MAX_CARD_READER_NUM_512];
            struCond.byEnableCardReader[0] = 1;
            if ("" == textBoxCardNo.Text)
            {
                MessageBox.Show("Please input the card number!");
                return;
            }
            struCond.byCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN];
            byte[] byTempCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text);
            for (int i = 0; i < byTempCardNo.Length; i++)
            {
                if (i > struCond.byCardNo.Length)
                {
                    MessageBox.Show("card number length too long!");
                    return;
                }
                struCond.byCardNo[i] = byTempCardNo[i];
            }

            int    dwSize      = Marshal.SizeOf(struCond);
            IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize);

            Marshal.StructureToPtr(struCond, ptrStruCond, false);
            g_fSetFaceParamCallback = new CHCNetSDK.RemoteConfigCallback(ProcessSetFaceParamCallback);
            m_lSetFaceCfgHandle     = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_FACE_PARAM_CFG, ptrStruCond, dwSize, g_fSetFaceParamCallback, this.Handle);
            if (-1 == m_lSetFaceCfgHandle)
            {
                g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_SET_FACE_PARAM_CFG");
            }
            else
            {
                g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_SET_FACE_PARAM_CFG");
            }
            Marshal.FreeHGlobal(ptrStruCond);

            CHCNetSDK.NET_DVR_FACE_PARAM_CFG struFaceParamCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CFG();
            struFaceParamCfg.dwSize                = (uint)Marshal.SizeOf(struFaceParamCfg);
            struFaceParamCfg.byFaceID              = 1;
            struFaceParamCfg.byFaceDataType        = 1;
            struFaceParamCfg.byEnableCardReader    = new byte[CHCNetSDK.MAX_CARD_READER_NUM_512];
            struFaceParamCfg.byEnableCardReader[0] = 1;
            struFaceParamCfg.byCardNo              = new byte[CHCNetSDK.ACS_CARD_NO_LEN];
            byte[] byTempFaceCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text);
            for (int i = 0; i < byTempFaceCardNo.Length; i++)
            {
                if (i > struFaceParamCfg.byCardNo.Length)
                {
                    MessageBox.Show("card number length too long!");
                    return;
                }
                struFaceParamCfg.byCardNo[i] = byTempFaceCardNo[i];
            }

            if (!File.Exists(textBoxFacePicturePath.Text))
            {
                MessageBox.Show("The face picture does not exist!");
                return;
            }
            FileStream fs = new FileStream(textBoxFacePicturePath.Text, FileMode.OpenOrCreate);

            if (0 == fs.Length)
            {
                MessageBox.Show("The face picture is 0k,please input another picture!");
                return;
            }
            if (200 * 1024 < fs.Length)
            {
                MessageBox.Show("The face picture is larger than 200k,please input another picture!");
                return;
            }

            struFaceParamCfg.dwFaceLen = (uint)fs.Length;
            int iLen = (int)struFaceParamCfg.dwFaceLen;

            byte[] by = new byte[iLen];
            struFaceParamCfg.pFaceBuffer = Marshal.AllocHGlobal(iLen);
            fs.Read(by, 0, iLen);
            Marshal.Copy(by, 0, struFaceParamCfg.pFaceBuffer, iLen);
            fs.Close();

            uint   dwParamSize         = (uint)Marshal.SizeOf(struFaceParamCfg);
            IntPtr ptrStruFaceParamCfg = Marshal.AllocHGlobal((int)dwParamSize);

            Marshal.StructureToPtr(struFaceParamCfg, ptrStruFaceParamCfg, false);

            if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetFaceCfgHandle, 9, ptrStruFaceParamCfg, dwParamSize))
            {
                g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "set face picture failed!");
            }

            Marshal.FreeHGlobal(struFaceParamCfg.pFaceBuffer);
            Marshal.FreeHGlobal(ptrStruFaceParamCfg);

            return;
        }