Ejemplo n.º 1
0
        private void btnMotionCfg_Click(object sender, EventArgs e)
        {
            MotionDetect dlg = new MotionDetect();

            dlg.m_lUserID        = m_lUserID;
            dlg.m_struDeviceInfo = m_struDeviceInfo;
            dlg.m_struPicCfgV40  = m_struPicCfgV40;
            dlg.m_lChannel       = m_lChannel;
            dlg.ShowDialog();
            m_struPicCfgV40 = dlg.m_struPicCfgV40;
        }
Ejemplo n.º 2
0
        private void buttonGetEncode_Click(object sender, EventArgs e)
        {
            UInt32 dwReturn  = 0;
            Int32  nSize     = Marshal.SizeOf(m_struPicCfgV40);
            IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfg, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V40, m_lChannel, ptrPicCfg, (UInt32)nSize, ref dwReturn))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                strErr   = "NET_DVR_GET_PICCFG_V40 failed, error code= " + iLastErr;
                //获取图像参数失败,输出错误号 Failed to get image parameters and output the error code
                MessageBox.Show(strErr);
            }
            else
            {
                m_struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                if (m_struPicCfgV40.dwShowChanName == 1)
                {
                    checkBoxChanName.Checked = true;
                }
                else
                {
                    checkBoxChanName.Checked = false;
                }
                textBoxChanName.Text = System.Text.Encoding.GetEncoding("GBK").GetString(m_struPicCfgV40.sChanName);
                textBoxXName.Text    = Convert.ToString(m_struPicCfgV40.wShowNameTopLeftX);
                textBoxYName.Text    = Convert.ToString(m_struPicCfgV40.wShowNameTopLeftY);
                if (m_struPicCfgV40.dwShowOsd == 1)
                {
                    checkBoxOSD.Checked = true;
                }
                else
                {
                    checkBoxOSD.Checked = false;
                }
                if (m_struPicCfgV40.byDispWeek == 1)
                {
                    checkBoxWeek.Checked = true;
                }
                else
                {
                    checkBoxWeek.Checked = false;
                }
                comboBoxTime.SelectedIndex = m_struPicCfgV40.byHourOSDType;
                comboBoxDate.SelectedIndex = m_struPicCfgV40.byOSDType;

                if (m_struPicCfgV40.byFontSize == 0xff)
                {
                    comboBoxSize.SelectedIndex = 4;
                }
                else
                {
                    comboBoxSize.SelectedIndex = m_struPicCfgV40.byFontSize;
                }
                comboBoxDisplay.SelectedIndex = m_struPicCfgV40.byOSDAttrib - 1;
                textBoxXOSD.Text = Convert.ToString(m_struPicCfgV40.wOSDTopLeftX);
                textBoxYOSD.Text = Convert.ToString(m_struPicCfgV40.wOSDTopLeftY);
            }
            Marshal.FreeHGlobal(ptrPicCfg);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 取消报警设置
        /// </summary>
        /// <param name="pDVRIP">设备IP地址</param>
        /// <param name="nChannel">设备通道号</param>
        /// <param name="m_lUserID">登录设备后返回ID</param>
        public static int Alarm_Close(string pDVRIP, Int32 nChannel, Int32 m_lUserID)
        {
            //-------------------获取分辨率---------------------------
            UInt32 dwReturn_CFG   = 0;
            Int32  nSize_CFG      = Marshal.SizeOf(m_comPressionCFG);
            IntPtr comPressionCFG = Marshal.AllocHGlobal(nSize_CFG);

            Marshal.StructureToPtr(m_comPressionCFG, comPressionCFG, false);
            bool CFG = CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, nChannel, comPressionCFG, (UInt32)nSize_CFG, ref dwReturn_CFG);
            //------------------ 获取通道图象结构(V40扩展)------------
            UInt32 dwReturn  = 0;
            Int32  nSize     = Marshal.SizeOf(m_struPicCfgV40);
            IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfg, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V40, nChannel, ptrPicCfg, (UInt32)nSize, ref dwReturn))
            {
                uint   iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr   = "NET_DVR_GET_PICCFG_V40 failed, error code= " + iLastErr;
                return(int.Parse(iLastErr.ToString()));
                //获取图像参数失败,输出错误号 Failed to get image parameters and output the error code
                //MessageBox.Show(strErr);
            }
            else
            {
                m_struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                m_struMotionV40 = m_struPicCfgV40.struMotion;
            }
            /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
            m_struMotionV40.struMotionMode.struMotionSingleArea.byMotionSensitive = 0;
            SetAlarmHandleWnd();
            SetAlarmTimeWnd();
            m_struMotionV40.byEnableHandleMotion = 0;
            //设置移动侦测区域
            for (int i = 0; i < 18; i++)
            {
                for (int j = 0; j < 22; j++)
                {
                    m_struMotionV40.struMotionMode.struMotionSingleArea.byMotionScope[i * 96 + j] = 0;
                }
            }
            m_struPicCfgV40.struMotion = m_struMotionV40;
            Int32  nSize_Set     = Marshal.SizeOf(m_struPicCfgV40);
            IntPtr ptrPicCfg_Set = Marshal.AllocHGlobal(nSize_Set);

            Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfg_Set, false);
            if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_PICCFG_V40, nChannel, ptrPicCfg_Set, (UInt32)nSize_Set))
            {
                uint   iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr   = "NET_DVR_SET_PICCFG_V40 failed, error code= " + iLastErr;
                Marshal.FreeHGlobal(ptrPicCfg_Set);
                return(int.Parse(iLastErr.ToString()));
                //设置图像参数失败,输出错误号 Failed to set image parameters and output the error code
                //MessageBox.Show(strErr);
            }
            else
            {
                return(1);
                //MessageBox.Show("设置图像参数成功!");
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 设置划线报警
        /// </summary>
        /// <param name="pDVRIP">设备IP地址</param>
        /// <param name="nChannel">设备通道号</param>
        /// <param name="m_lUserID">登录设备后返回ID</param>
        /// <param name="nAlarmType">报警类型 1,移动全屏报警 2,移动局部报警 3,移动过线报警</param>
        /// <param name="nSensitive">灵敏度:1-5 1,最低 5,最高</param>
        /// <param name="pChannelName">报警名称</param>
        /// <param name="PointStr">报警划线</param>
        /// <param name="SizeX">picturebox的x</param>
        /// <param name="SizeY">picturebox的y</param>
        /// <returns></returns>
        public static int AlarmSet(string pDVRIP, Int32 nChannel, Int32 m_lUserID, Int32 nAlarmType, Int32 nSensitive, string pChannelName, string PointStr, Int32 SizeX, Int32 SizeY)
        {
            //-------------------获取分辨率---------------------------
            UInt32 dwReturn_CFG   = 0;
            Int32  nSize_CFG      = Marshal.SizeOf(m_comPressionCFG);
            IntPtr comPressionCFG = Marshal.AllocHGlobal(nSize_CFG);

            Marshal.StructureToPtr(m_comPressionCFG, comPressionCFG, false);
            bool CFG = CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, nChannel, comPressionCFG, (UInt32)nSize_CFG, ref dwReturn_CFG);
            //------------------ 获取通道图象结构(V40扩展)------------
            UInt32 dwReturn  = 0;
            Int32  nSize     = Marshal.SizeOf(m_struPicCfgV40);
            IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfg, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V40, nChannel, ptrPicCfg, (UInt32)nSize, ref dwReturn))
            {
                uint   iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr   = "NET_DVR_GET_PICCFG_V40 failed, error code= " + iLastErr;
                return(int.Parse(iLastErr.ToString()));
                //获取图像参数失败,输出错误号 Failed to get image parameters and output the error code
                //MessageBox.Show(strErr);
            }
            else
            {
                m_struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                m_struMotionV40 = m_struPicCfgV40.struMotion;
            }
            /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
            m_struMotionV40.struMotionMode.struMotionSingleArea.byMotionSensitive = (byte)nSensitive;
            SetAlarmHandleWnd();
            SetAlarmTimeWnd();
            //SetRecordChanWnd();
            //if (checkBoxEnableMotion.Checked)
            //{
            //处理移动侦测
            m_struMotionV40.byEnableHandleMotion = 1;
            //}
            //else
            //{
            //    m_struMotionV40.byEnableHandleMotion = 0;
            //}
            #region
            //设置移动侦测区域
            int      Alarm_result = 0;
            string[] str          = null;
            //int screenResolution = AlarmOperation.BF_Video_SDK.XW_DVR_GetVideoSize(pDVRIP, nChannel);//获取分辨率
            //MessageBox.Show(screenResolution.ToString());
            int k = 27;//全部统一默认1080P
            switch (k)
            {
            case 0:
            {
                //DCIF = 528×384
                m_nVideoSize.X = 528;
                m_nVideoSize.Y = 384;
                break;
            }

            case 1:
            {
                //CIF = 352×288
                m_nVideoSize.X = 352;
                m_nVideoSize.Y = 288;
                break;
            }

            case 2:
            {
                //QCIF = 176×144
                m_nVideoSize.X = 176;
                m_nVideoSize.Y = 144;
                break;
            }

            case 3:
            {
                //4CIF = 704×576
                m_nVideoSize.X = 704;
                m_nVideoSize.Y = 576;
                break;
            }

            case 4:
            {
                //2CIF = 704×288
                m_nVideoSize.X = 704;
                m_nVideoSize.Y = 288;
                break;
            }

            case 6:
            {
                //QVGA = 320*240
                m_nVideoSize.X = 320;
                m_nVideoSize.Y = 240;
                break;
            }

            case 7:
            {
                //7-QQVGA(160*120)
                m_nVideoSize.X = 160;
                m_nVideoSize.Y = 120;
                break;
            }

            case 12:
            {
                //12-384*288
                m_nVideoSize.X = 384;
                m_nVideoSize.Y = 288;
                break;
            }

            case 13:
            {
                //13-576*576
                m_nVideoSize.X = 576;
                m_nVideoSize.Y = 576;
                break;
            }

            case 16:
            {
                //VGA = 640×480
                m_nVideoSize.X = 640;
                m_nVideoSize.Y = 480;
                break;
            }

            case 17:
            {
                //UXGA = 1600×1200
                m_nVideoSize.X = 1600;
                m_nVideoSize.Y = 1200;
                break;
            }

            case 18:
            {
                //SVGA = 800×600
                m_nVideoSize.X = 800;
                m_nVideoSize.Y = 600;
                break;
            }

            case 19:
            {
                //HD720p = 1280×720
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 720;
                break;
            }

            case 20:
            {
                //20-XVGA(1280*960)
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 960;
                break;
            }

            case 22:
            {
                //22-1360*1024
                m_nVideoSize.X = 1360;
                m_nVideoSize.Y = 1024;
                break;
            }

            case 23:
            {
                //23-1536*1536
                m_nVideoSize.X = 1536;
                m_nVideoSize.Y = 1536;
                break;
            }

            case 24:
            {
                //24-1920*1920
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1920;
                break;
            }

            case 27:
            {
                //27-1920*1080p
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1080;
                break;
            }

            case 28:
            {
                //28-2560*1920
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 1920;
                break;
            }

            case 29:
            {
                //29-1600*304
                m_nVideoSize.X = 1600;
                m_nVideoSize.Y = 304;
                break;
            }

            case 30:
            {
                //30-2048*1536
                m_nVideoSize.X = 2048;
                m_nVideoSize.Y = 1536;
                break;
            }

            case 31:
            {
                //31-2448*2048
                m_nVideoSize.X = 2448;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 32:
            {
                //32-2448*1200
                m_nVideoSize.X = 2448;
                m_nVideoSize.Y = 1200;
                break;
            }

            case 33:
            {
                //33-2448*800
                m_nVideoSize.X = 2448;
                m_nVideoSize.Y = 800;
                break;
            }

            case 34:
            {
                //34-XGA(1024*768)
                m_nVideoSize.X = 1024;
                m_nVideoSize.Y = 768;
                break;
            }

            case 35:
            {
                //35-SXGA(1280*1024)
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 1024;
                break;
            }

            case 36:
            {
                //36-WD1(960*576/960*480)
                m_nVideoSize.X = 960;
                m_nVideoSize.Y = 576;
                break;
            }

            case 37:
            {
                //37-1080i(1920*1080)
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1080;
                break;
            }

            case 38:
            {
                //38-WXGA(1440*900)
                m_nVideoSize.X = 1440;
                m_nVideoSize.Y = 900;
                break;
            }

            case 39:
            {
                //39-HD_F(1920*1080/1280*720)
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1080;
                break;
            }

            case 40:
            {
                //40-HD_H(1920*540/1280*360)
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 540;
                break;
            }

            case 41:
            {
                //41-HD_Q(960*540/630*360)
                m_nVideoSize.X = 960;
                m_nVideoSize.Y = 540;
                break;
            }

            case 42:
            {
                //42-2336*1744
                m_nVideoSize.X = 2336;
                m_nVideoSize.Y = 1744;
                break;
            }

            case 43:
            {
                //43-1920*1456
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1456;
                break;
            }

            case 44:
            {
                //44-2592*2048
                m_nVideoSize.X = 2592;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 45:
            {
                //45-3296*2472
                m_nVideoSize.X = 3296;
                m_nVideoSize.Y = 2472;
                break;
            }

            case 46:
            {
                //46-1376*768
                m_nVideoSize.X = 1376;
                m_nVideoSize.Y = 768;
                break;
            }

            case 47:
            {
                //47-1366*768
                m_nVideoSize.X = 1366;
                m_nVideoSize.Y = 768;
                break;
            }

            case 48:
            {
                //48-1360*768
                m_nVideoSize.X = 1360;
                m_nVideoSize.Y = 768;
                break;
            }

            case 49:
            {
                //49-WSXGA+ 1680*1050
                m_nVideoSize.X = 1680;
                m_nVideoSize.Y = 1050;
                break;
            }

            case 50:
            {
                //50-720*720
                m_nVideoSize.X = 720;
                m_nVideoSize.Y = 720;
                break;
            }

            case 51:
            {
                //51-1280*1280
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 1280;
                break;
            }

            case 52:
            {
                //52-2048*768
                m_nVideoSize.X = 2048;
                m_nVideoSize.Y = 768;
                break;
            }

            case 53:
            {
                //53-2048*2048
                m_nVideoSize.X = 2048;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 54:
            {
                //54-2560*2048
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 55:
            {
                //55-3072*2048
                m_nVideoSize.X = 3072;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 56:
            {
                //56-2304*1296
                m_nVideoSize.X = 2304;
                m_nVideoSize.Y = 1296;
                break;
            }

            case 57:
            {
                //57-WXGA(1280*800)
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 800;
                break;
            }

            case 58:
            {
                //58-1600*600
                m_nVideoSize.X = 1600;
                m_nVideoSize.Y = 600;
                break;
            }

            case 59:
            {
                //59-1600*900
                m_nVideoSize.X = 1600;
                m_nVideoSize.Y = 900;
                break;
            }

            case 60:
            {
                //60-2752*2208
                m_nVideoSize.X = 2752;
                m_nVideoSize.Y = 2208;
                break;
            }

            case 61:
            {
                //61-384*288
                m_nVideoSize.X = 384;
                m_nVideoSize.Y = 288;
                break;
            }

            case 62:
            {
                //62-4000*3000
                m_nVideoSize.X = 4000;
                m_nVideoSize.Y = 3000;
                break;
            }

            case 63:
            {
                //63-4096*2160
                m_nVideoSize.X = 4096;
                m_nVideoSize.Y = 2160;
                break;
            }

            case 64:
            {
                //64-3840*2160
                m_nVideoSize.X = 3840;
                m_nVideoSize.Y = 2160;
                break;
            }

            case 65:
            {
                //65-4000*2250
                m_nVideoSize.X = 4000;
                m_nVideoSize.Y = 2250;
                break;
            }

            case 66:
            {
                //66-3072*1728
                m_nVideoSize.X = 3072;
                m_nVideoSize.Y = 1728;
                break;
            }

            case 67:
            {
                //67-2592*1944
                m_nVideoSize.X = 2592;
                m_nVideoSize.Y = 1944;
                break;
            }

            case 68:
            {
                //68-2464*1520
                m_nVideoSize.X = 2464;
                m_nVideoSize.Y = 1520;
                break;
            }

            case 69:
            {
                //69-1280*1920
                m_nVideoSize.X = 1280;
                m_nVideoSize.Y = 1920;
                break;
            }

            case 70:
            {
                //70-2560*1440
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 1440;
                break;
            }

            case 71:
            {
                //71-1024*1024
                m_nVideoSize.X = 1024;
                m_nVideoSize.Y = 1024;
                break;
            }

            case 72:
            {
                //72-160*128
                m_nVideoSize.X = 160;
                m_nVideoSize.Y = 128;
                break;
            }

            case 73:
            {
                //73-324*240
                m_nVideoSize.X = 324;
                m_nVideoSize.Y = 240;
                break;
            }

            case 74:
            {
                //74-324*256
                m_nVideoSize.X = 324;
                m_nVideoSize.Y = 256;
                break;
            }

            case 75:
            {
                //75-336*256
                m_nVideoSize.X = 336;
                m_nVideoSize.Y = 256;
                break;
            }

            case 76:
            {
                //76-640*512
                m_nVideoSize.X = 640;
                m_nVideoSize.Y = 512;
                break;
            }

            case 77:
            {
                //77-2720*2048
                m_nVideoSize.X = 2720;
                m_nVideoSize.Y = 2048;
                break;
            }

            case 78:
            {
                //78-384*256
                m_nVideoSize.X = 384;
                m_nVideoSize.Y = 256;
                break;
            }

            case 79:
            {
                //79-384*216
                m_nVideoSize.X = 384;
                m_nVideoSize.Y = 216;
                break;
            }

            case 80:
            {
                //80-320*256
                m_nVideoSize.X = 320;
                m_nVideoSize.Y = 256;
                break;
            }

            case 81:
            {
                //81-320*180
                m_nVideoSize.X = 320;
                m_nVideoSize.Y = 180;
                break;
            }

            case 82:
            {
                //82-320*192
                m_nVideoSize.X = 320;
                m_nVideoSize.Y = 192;
                break;
            }

            case 83:
            {
                //83-512*384
                m_nVideoSize.X = 512;
                m_nVideoSize.Y = 384;
                break;
            }

            case 84:
            {
                //84-325*256
                m_nVideoSize.X = 325;
                m_nVideoSize.Y = 256;
                break;
            }

            case 85:
            {
                //85-256*192
                m_nVideoSize.X = 256;
                m_nVideoSize.Y = 192;
                break;
            }

            case 86:
            {
                //86- 640*360
                m_nVideoSize.X = 640;
                m_nVideoSize.Y = 360;
                break;
            }

            case 87:
            {
                //87-1776x1340
                m_nVideoSize.X = 1776;
                m_nVideoSize.Y = 1340;
                break;
            }

            case 88:
            {
                //88-1936x1092
                m_nVideoSize.X = 1936;
                m_nVideoSize.Y = 1092;
                break;
            }

            case 89:
            {
                //89-2080x784
                m_nVideoSize.X = 2080;
                m_nVideoSize.Y = 784;
                break;
            }

            case 90:
            {
                //90-2144x604
                m_nVideoSize.X = 2144;
                m_nVideoSize.Y = 604;
                break;
            }

            case 91:
            {
                //91-1920*1200
                m_nVideoSize.X = 1920;
                m_nVideoSize.Y = 1200;
                break;
            }

            case 92:
            {
                //92-4064*3040
                m_nVideoSize.X = 4064;
                m_nVideoSize.Y = 3040;
                break;
            }

            case 93:
            {
                //93-3040*3040
                m_nVideoSize.X = 3040;
                m_nVideoSize.Y = 3040;
                break;
            }

            case 94:
            {
                //94-3072*2304
                m_nVideoSize.X = 3072;
                m_nVideoSize.Y = 2304;
                break;
            }

            case 95:
            {
                //95-3072*1152
                m_nVideoSize.X = 3072;
                m_nVideoSize.Y = 1152;
                break;
            }

            case 96:
            {
                //96-2560*2560
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 2560;
                break;
            }

            case 97:
            {
                //97-2688*1536
                m_nVideoSize.X = 2688;
                m_nVideoSize.Y = 1536;
                break;
            }

            case 98:
            {
                //98-2688*1520
                m_nVideoSize.X = 2688;
                m_nVideoSize.Y = 1520;
                break;
            }

            case 99:
            {
                //99-3072*3072
                m_nVideoSize.X = 3072;
                m_nVideoSize.Y = 3072;
                break;
            }

            case 100:
            {
                //100-3392*2008
                m_nVideoSize.X = 3392;
                m_nVideoSize.Y = 2008;
                break;
            }

            case 101:
            {
                //101-4000*3080
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 2560;
                break;
            }

            case 102:
            {
                //102-960*720
                m_nVideoSize.X = 960;
                m_nVideoSize.Y = 720;
                break;
            }

            case 103:
            {
                //103-1024*1536
                m_nVideoSize.X = 1024;
                m_nVideoSize.Y = 1536;
                break;
            }

            case 104:
            {
                //104-704*1056
                m_nVideoSize.X = 704;
                m_nVideoSize.Y = 1056;
                break;
            }

            case 105:
            {
                //105-352*528
                m_nVideoSize.X = 352;
                m_nVideoSize.Y = 528;
                break;
            }

            case 106:
            {
                //106-2048*1530
                m_nVideoSize.X = 2048;
                m_nVideoSize.Y = 1530;
                break;
            }

            case 107:
            {
                //107-2560*1600
                m_nVideoSize.X = 2560;
                m_nVideoSize.Y = 1600;
                break;
            }

            case 108:
            {
                //108-2800*2100
                m_nVideoSize.X = 2800;
                m_nVideoSize.Y = 2100;
                break;
            }

            case 109:
            {
                //109-4088*4088
                m_nVideoSize.X = 4088;
                m_nVideoSize.Y = 4088;
                break;
            }

            case 110:
            {
                //110-4000*3072
                m_nVideoSize.X = 4000;
                m_nVideoSize.Y = 3072;
                break;
            }

            case 111:
            {
                //111-960*1080(1080p Lite)
                m_nVideoSize.X = 960;
                m_nVideoSize.Y = 1080;
                break;
            }

            case 112:
            {
                //112-640*720(half 720p)
                m_nVideoSize.X = 640;
                m_nVideoSize.Y = 720;
                break;
            }
            }
            x = NVideoSize.X / 22;
            y = NVideoSize.Y / 18;
            if (NVideoSize.X == 0 || NVideoSize.Y == 0)
            {
                // MessageBox.Show("获取视频分辨率失败!");
                //return 0;
            }
            if (nAlarmType != 1 && PointStr != null)
            {
                //拿到PointStr先解析
                str = PointStr.Split('#');//将pointStr以#为标志分隔开,储存在str[]中
            }
            for (int i = 0; i < 396; i++)
            {
                Alarm_area[i] = 0;
            }
            switch (nAlarmType)
            {
            case 1:
                for (int i = 0; i < 396; i++)
                {
                    Alarm_area[i] = 1;
                }
                //Alarm_result = AlarmOperation.BF_Video_SDK.XW_DVR_SetAlarmInfo(pDVRIP, nChannel, nAlarmType, nSensitive, pChannelName, Alarm_area);
                break;    //全屏

            case 2:
                for (int i = 0; i < str.Length; i++)
                {
                    string[] str1 = str[i].Split(',');
                    MyPoint1.X = int.Parse(str1[0]);
                    MyPoint1.Y = int.Parse(str1[1]);
                    //for (int j = 0; j < t1.Count; j++)
                    //{
                    try
                    {
                        pEndPoint.X = MyPoint1.X * NVideoSize.X / SizeX;
                        pEndPoint.Y = MyPoint1.Y * NVideoSize.Y / SizeY;
                        Alarm_area[pEndPoint.X / x + pEndPoint.Y / y * 22] = 1;
                    }
                    catch { }
                    //}
                    //t1.Add(MyPoint1);
                }    //重绘时解析字符串

                for (int i = 0; i < 396; i++)
                {
                    bool AlarmJudge1 = false, AlarmJudge2 = false, AlarmJudge3 = false, AlarmJudge4 = false;
                    for (int j = i; j < 396; j += 22)
                    {
                        if (Alarm_area[j] == 1)
                        {
                            AlarmJudge1 = true;
                        }
                    }
                    for (int j = i; j > 0; j -= 22)
                    {
                        if (Alarm_area[j] == 1)
                        {
                            AlarmJudge2 = true;
                        }
                    }
                    for (int j = i; j < i + 22 && j < 396; j++)
                    {
                        if (Alarm_area[j] == 1)
                        {
                            AlarmJudge3 = true;
                        }
                    }
                    for (int j = i; j > 0 && j > i - 22; j--)
                    {
                        if (Alarm_area[j] == 1)
                        {
                            AlarmJudge4 = true;
                        }
                    }
                    if (AlarmJudge1 == true && AlarmJudge2 == true && AlarmJudge3 == true && AlarmJudge4 == true)
                    {
                        Alarm_area[i] = 1;
                    }
                }
                //Alarm_result = AlarmOperation.BF_Video_SDK.XW_DVR_SetAlarmInfo(pDVRIP, nChannel, nAlarmType, nSensitive, pChannelName, Alarm_area);
                break;    //局部

            case 3:
                //for (int i = 0; i < 396; i++)
                //{
                //    Alarm_area[i] = 0;
                //}
                for (int i = 0; i < str.Length; i++)
                {
                    string[] str1 = str[i].Split(',');
                    MyPoint1.X = int.Parse(str1[0]);
                    MyPoint1.Y = int.Parse(str1[1]);
                    //for (int j = 0; j < t1.Count; j++)
                    //{
                    try
                    {
                        pEndPoint.X = MyPoint1.X * NVideoSize.X / SizeX;
                        pEndPoint.Y = MyPoint1.Y * NVideoSize.Y / SizeY;
                        Alarm_area[pEndPoint.X / x + pEndPoint.Y / y * 22] = 1;
                    }
                    catch { }
                    //}
                    //t1.Add(MyPoint1);
                }    //重绘时解析字符串

                try
                {
                    //Alarm_result = AlarmOperation.BF_Video_SDK.XW_DVR_SetAlarmInfo(pDVRIP, nChannel, nAlarmType, nSensitive, pChannelName, Alarm_area);
                }
                catch { }

                break;    //过线
            }
            for (int i = 0; i < 18; i++)
            {
                for (int j = 0; j < 22; j++)
                {
                    m_struMotionV40.struMotionMode.struMotionSingleArea.byMotionScope[i * 96 + j] = (byte)Alarm_area[i * 22 + j];
                }
            }
            #endregion
            m_struPicCfgV40.struMotion = m_struMotionV40;
            Int32  nSize_Set     = Marshal.SizeOf(m_struPicCfgV40);
            IntPtr ptrPicCfg_Set = Marshal.AllocHGlobal(nSize_Set);
            Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfg_Set, false);
            if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_PICCFG_V40, nChannel, ptrPicCfg_Set, (UInt32)nSize_Set))
            {
                uint   iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr   = "NET_DVR_SET_PICCFG_V40 failed, error code= " + iLastErr;
                Marshal.FreeHGlobal(ptrPicCfg);
                return(int.Parse(iLastErr.ToString()));
                //设置图像参数失败,输出错误号 Failed to set image parameters and output the error code
                //MessageBox.Show(strErr);
            }
            else
            {
                Marshal.FreeHGlobal(ptrPicCfg);
                return(1);
                //MessageBox.Show("设置图像参数成功!");
            }
            //CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_SHOWSTRING_V30, m_lChannel, ptrShowStrCfg, (UInt32)nSize);
            //if (checkBoxDisplay.Checked)
            //{
            //    m_struMotionV40.byEnableDisplay = 1;
            //}
            /*启用移动侦测高亮显示,0-否,1-是*/
            //m_struPicCfgV40.struMotion = m_struMotionV40;

            //MessageBox.Show("保存参数成功!");
        }
Ejemplo n.º 5
0
        public override bool Initialilize()
        {
            LastRunTime      = DateTime.Now.Ticks / 10000;
            struIpParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40();
            struPicCfgV40    = new CHCNetSDK.NET_DVR_PICCFG_V40();
            m_struShowStrCfg = new CHCNetSDK.NET_DVR_SHOWSTRING_V30();
            Console.WriteLine("开始初始化");
            heartbeat.Interval = 60 * 1000 * 3;
            heartbeat.Elapsed -= Heartbeat_Elapsed;
            heartbeat.Elapsed += Heartbeat_Elapsed;
            heartbeat.Start();
            if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\"))
            {
                Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\");
            }
            Config config = new Config(configpath)
            {
                GroupName = "service"
            };

            string[] host = config.GetSectionValues();
            if (NVRInfos == null)
            {
                CHCNetSDK.NET_DVR_SetLogToFile(0, AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\", true);
                bool init = CHCNetSDK.NET_DVR_Init();
                if (!init)
                {
                    _log.Error("初始化失败" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "初始化失败";
                    return(false);
                }

                bool retime = CHCNetSDK.NET_DVR_SetConnectTime(3000, 500);
                if (!retime)
                {
                    _log.Error("连接超时设置" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "连接超时设置";
                }
                bool re = CHCNetSDK.NET_DVR_SetReconnect(3000, 1);
                if (!re)
                {
                    _log.Error("重连设置" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "重连设置";
                }

                NVRInfos = new List <NVRInfo>();
            }
            for (int x = 0; x < host.Length; x++)
            {
                string name = host[x];
                config.Section = name;
                string ip       = config.GetValue("host", "ip", "192.168.2.1");
                int    port     = config.GetValue("host", "port", 8000);
                string username = config.GetValue("host", "username", "admin");
                string password = config.GetValue("host", "password", "ywwy2016");
                _log.Error(name + "." + x);
                NVRInfo nvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);

                if (nvr == null)
                {
                    nvr = new NVRInfo()
                    {
                        Host = new NVRHostHiKv()
                        {
                            DVRIPAddress = ip, DVRPassword = password, DVRPort = port, DVRUserName = username, LUserId = -1
                        }, IPCs = new List <IPC>()
                    };
                }
                CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
                int _login = -1;
                if (nvr.Host.LUserId > -1)
                {
                    _login = nvr.Host.LUserId;
                }
                else
                {
                    _login = CHCNetSDK.NET_DVR_Login_V30(ip, port, username, password, ref DeviceInfo);
                    Console.WriteLine(x + "登录" + _login);
                }

                if (_login >= 0)
                {
                    nvr.DeviceInfo   = DeviceInfo;
                    nvr.Host.LUserId = _login;
                    uint dwSize = (uint)Marshal.SizeOf(struIpParaCfgV40);

                    IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);
                    Marshal.StructureToPtr(struIpParaCfgV40, ptrIpParaCfgV40, true);

                    uint dwReturn = 0;
                    int  iGroupNo = 0;
                    #region IPC通道
                    if (DeviceInfo.byIPChanNum > 0)
                    {
                        if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn))
                        {
                            ErrorMsg = "获取IPC失败." + CHCNetSDK.NET_DVR_GetLastError();
                            Console.WriteLine(ErrorMsg);
                            _log.Error(ErrorMsg);
                            Marshal.FreeHGlobal(ptrIpParaCfgV40);
                        }
                        else
                        {
                            struIpParaCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40));
                            CHCNetSDK.NET_DVR_IPDEVINFO_V31[] ipdevinfos = struIpParaCfgV40.struIPDevInfo;
                            #region 获取通道信息
                            for (int m = 0; m < ipdevinfos.Length; m++)
                            {
                                CHCNetSDK.NET_DVR_GET_STREAM_UNION unionGetStream = struIpParaCfgV40.struStreamMode[m].uGetStream;
                                uint   unSize      = (uint)Marshal.SizeOf(unionGetStream);
                                IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)unSize);
                                Marshal.StructureToPtr(unionGetStream, ptrChanInfo, true);
                                CHCNetSDK.NET_DVR_IPCHANINFO struChanInfo = (CHCNetSDK.NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(CHCNetSDK.NET_DVR_IPCHANINFO));
                                IPC ipc = new IPC()
                                {
                                    AdminPort = ipdevinfos[m].wDVRPort.ToString(), ChannelIndex = m + (int)struIpParaCfgV40.dwStartDChan, ChannelIp = ipdevinfos[m].struIP.sIpV4, ChannelName = "IPCamera" + m, Status = ipdevinfos[m].byEnable, UserName = Encoding.UTF8.GetString(ipdevinfos[m].sUserName).Trim('\0')
                                };
                                #region 获取通道名称
                                if (ipc.Status == 1)
                                {
                                    Int32  nSize     = Marshal.SizeOf(struPicCfgV40);
                                    IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
                                    Marshal.StructureToPtr(struPicCfgV40, ptrPicCfg, true);
                                    if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_PICCFG_V40, ipc.ChannelIndex, ptrPicCfg, (UInt32)nSize, ref dwReturn))
                                    {
                                        ipc.ErrorMsg = CHCNetSDK.NET_DVR_GetLastError().ToString();
                                        ipc.Status   = 0;
                                        IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                        if (oldipc != null)
                                        {
                                            nvr.IPCs.Remove(oldipc);
                                        }
                                        nvr.IPCs.Add(ipc);
                                    }
                                    else
                                    {
                                        struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                                        if (struPicCfgV40.sChanName != null)
                                        {
                                            ipc.ChannelNumber = System.Text.Encoding.GetEncoding("GBK").GetString(struPicCfgV40.sChanName).Trim('\0');
                                        }
                                        ipc.Status = struChanInfo.byEnable;
                                        _log.Info("2:" + ipc.ChannelIndex + "." + ipc.ChannelIp + "." + struChanInfo.byEnable + "." + ipc.ChannelNumber);
                                        Console.WriteLine(ipc.ChannelIndex + "." + ipc.ChannelIp + "." + struChanInfo.byEnable + "." + ipc.ChannelNumber);
                                        IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                        if (oldipc != null)
                                        {
                                            nvr.IPCs.Remove(oldipc);
                                        }
                                        nvr.IPCs.Add(ipc);
                                    }
                                    Marshal.FreeHGlobal(ptrPicCfg);
                                }
                                #endregion
                                Marshal.FreeHGlobal(ptrChanInfo);
                            }
                            #endregion
                        }

                        NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                        if (nvr != null)
                        {
                            NVRInfos.Remove(oldnvr);
                        }
                        NVRInfos.Add(nvr);
                    }
                    #endregion
                    #region 其他通道
                    else
                    {
                        for (int i = 0; i < DeviceInfo.byChanNum; i++)
                        {
                            dwReturn = 0;

                            Int32  nSize     = Marshal.SizeOf(struPicCfgV40);
                            IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
                            Marshal.StructureToPtr(struPicCfgV40, ptrPicCfg, true);
                            int chancelid = i + DeviceInfo.byStartChan;
                            if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_PICCFG_V40, chancelid, ptrPicCfg, (UInt32)nSize, ref dwReturn))
                            {
                                ErrorMsg = CHCNetSDK.NET_DVR_GetLastError().ToString();
                            }
                            else
                            {
                                struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                                IPC ipc = new IPC()
                                {
                                    AdminPort = "", ChannelIndex = chancelid, ChannelIp = nvr.Host.DVRIPAddress, ChannelName = "IPCamera" + i, Status = 1, ChannelNumber = System.Text.Encoding.GetEncoding("GBK").GetString(struPicCfgV40.sChanName).Trim('\0')
                                };

                                IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                if (oldipc != null)
                                {
                                    nvr.IPCs.Remove(oldipc);
                                }
                                nvr.IPCs.Add(ipc);
                            }
                            NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                            if (nvr != null)
                            {
                                NVRInfos.Remove(oldnvr);
                            }
                            NVRInfos.Add(nvr);
                            Marshal.FreeHGlobal(ptrPicCfg);
                        }
                    }
                    #endregion

                    Marshal.FreeHGlobal(ptrIpParaCfgV40);
                }
                else
                {
                    NVRInfo nvrerr = new NVRInfo()
                    {
                        Host = new NVRHostHiKv()
                        {
                            DVRIPAddress = ip, DVRPassword = password, DVRPort = port, DVRUserName = username, LUserId = -1
                        }, IPCs = new List <IPC>()
                    };

                    ErrorMsg             = "登录失败." + CHCNetSDK.NET_DVR_GetLastError();
                    nvrerr.Host.ErrorMsg = ErrorMsg;
                    Console.WriteLine(ErrorMsg);
                    _log.Error(ErrorMsg);
                    NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                    if (nvr != null)
                    {
                        NVRInfos.Remove(oldnvr);
                    }
                    NVRInfos.Add(nvrerr);
                }
            }
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Console.WriteLine("完成初始化");

            return(true);
        }