예제 #1
0
파일: PreSet.cs 프로젝트: ramuasece/.net
        private void PreSetSet_Click(object sender, EventArgs e)
        {
            while (comboBox1.Text != "")
            {
                if (textBoxPanPos1.Text == "" || textBoxTiltPos1.Text == "" || textBoxZoomPos1.Text == "" || PreSetName.Text == "")
                {
                    MessageBox.Show("please input the Parameters");
                    return;
                }
                else
                {
                    PreSetNo = comboBox1.Items.IndexOf(comboBox1.Text);
                    m_struPreSetCfg[PreSetNo].byRes  = new byte[58];
                    m_struPreSetCfg[PreSetNo].byRes1 = new byte[2];
                    Int32  nSize        = Marshal.SizeOf(m_struPreSetCfg[PreSetNo]);
                    IntPtr ptrPreSetCfg = Marshal.AllocHGlobal(nSize);


                    m_struPreSetCfg[PreSetNo].dwSize = (uint)nSize;

                    /*str1 = "dddd";
                     * m_struPreSetCfg[PreSetNo].byName = System.Text.Encoding.Default.GetBytes(str1);*/
                    /* m_struPreSetCfg[PreSetNo].byName = new byte[32];
                     * m_struPreSetCfg[PreSetNo].byName[0] = 100;
                     * m_struPreSetCfg[PreSetNo].byName[1] = 100;
                     * m_struPreSetCfg[PreSetNo].byName[2] = 100;
                     * m_struPreSetCfg[PreSetNo].byName[3] = 100;*/
                    byte[] byName = System.Text.Encoding.Default.GetBytes(PreSetName.Text);
                    m_struPreSetCfg[PreSetNo].byName = new byte[32];
                    byName.CopyTo(m_struPreSetCfg[PreSetNo].byName, 0);

                    /* m_struPreSetCfg[PreSetNo].wPanPos = new UInt16();
                     * m_struPreSetCfg[PreSetNo].wPanPos = ushort.Parse(textBoxPanPos.Text);
                     * /*  m_struPreSetCfg[PreSetNo].wTiltPos = ushort.Parse(textBoxTiltPos.Text);
                     * m_struPreSetCfg[PreSetNo].wZoomPos = ushort.Parse(textBoxZoomPos.Text);*/

                    /*for (i = 0; i < 32; i++)
                     * {
                     *  m_struPreSetCfg[PreSetNo].byName[i] = byte.Parse(str);
                     * }*/
                    Marshal.StructureToPtr(m_struPreSetCfg[PreSetNo], ptrPreSetCfg, false);

                    //设置参数失败
                    if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_PRESET_NAME, 1, ptrPreSetCfg, (UInt32)nSize))
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        str      = "NET_DVR_SetDVRConfig failed, error code= " + iLastErr;
                        MessageBox.Show(str);
                        return;
                    }
                    else
                    {
                        m_struPreSetCfg[PreSetNo] = (CHCNetSDK.NET_DVR_PRESET_NAME)Marshal.PtrToStructure(ptrPreSetCfg, typeof(CHCNetSDK.NET_DVR_PRESET_NAME));
                        MessageBox.Show("设置成功");
                    }
                    Marshal.FreeHGlobal(ptrPreSetCfg);
                    return;
                }
            }
            MessageBox.Show("please input the PtrPreSetNo");
        }
예제 #2
0
        private void MotionDetect_Load(object sender, EventArgs e)
        {
            string str = "";
            byte   byCount;

            for (byCount = 1; byCount <= m_struDeviceInfo.byChanNum; byCount++)
            {
                str = String.Format("Camera {0}", byCount);
                treeViewRecordChan.Nodes.Add(str); //关联的录像通道 - 模拟通道
            }

            for (byCount = 1; byCount <= m_struDeviceInfo.byIPChanNum; byCount++)
            {
                str = String.Format("IPCamera {0}", byCount);
                treeViewRecordIPChan.Nodes.Add(str);//关联的录像通道 - IP通道
            }

            for (byCount = 1; byCount <= m_struDeviceInfo.byAlarmOutPortNum; byCount++)
            {
                str = String.Format("Alarm Out {0}", byCount);//关联的报警输出口
                treeViewAlarmOut.Nodes.Add(str);
            }

            CHCNetSDK.NET_DVR_PREVIEWINFO struClientInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            struClientInfo.lChannel     = m_lChannel; //预览通道号
            struClientInfo.dwStreamType = 0;          //0-主码流,1-子码流,2-码流3,3-虚拟码流
            struClientInfo.dwLinkMode   = 0;          //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            struClientInfo.hPlayWnd     = MotionRealPlay.Handle;
            struClientInfo.bBlocked     = true;

            m_lMotionPlayHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref struClientInfo, null, IntPtr.Zero);

            if (m_lMotionPlayHandle < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                strErr   = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr;
                //预览失败,输出错误号 Failed to start live view and output the error code
                MessageBox.Show(strErr);
            }
            else
            {
                //注册画图回调
                m_fMotionDraw = new CHCNetSDK.DRAWFUN(MotionDrawCallBack);
                CHCNetSDK.NET_DVR_RigisterDrawFun(m_lMotionPlayHandle, m_fMotionDraw, 0);
            }

            m_struMotionV40 = m_struPicCfgV40.struMotion;

            //是否处理移动侦测
            if (m_struMotionV40.byEnableHandleMotion == 0)
            {
                checkBoxEnableMotion.Checked = false;
            }
            else
            {
                checkBoxEnableMotion.Checked = true;
            }

            if (m_struMotionV40.byEnableDisplay == 1)
            {
                checkBoxDisplay.Checked = true;
            }
            else
            {
                checkBoxDisplay.Checked = false;
            }

            //普通模式灵敏度
            if (m_struMotionV40.byConfigurationMode == 0)
            {
                //获取移动侦测灵敏度
                GetMotionSensitivityCurSel(m_struMotionV40.struMotionMode.struMotionSingleArea.byMotionSensitive);
            }

            comboBoxWeekday.SelectedIndex     = 0;
            comboBoxWeekdayCopy.SelectedIndex = 0;

            //设置布防时间、触发录像通道、触发报警输出口
            GetAlarmTimeWnd();
            GetRecordChanWnd();
            GetAlarmHandleWnd();
        }
예제 #3
0
        private void btnShowStringSet_Click(object sender, EventArgs e)
        {
            if (checkBoxOSD1.Checked)
            {
                m_struShowStrCfg.struStringInfo[0].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[0].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[0].sString             = textBoxOSD1.Text;
            m_struShowStrCfg.struStringInfo[0].wStringSize         = (ushort)textBoxOSD1.Text.Length;
            m_struShowStrCfg.struStringInfo[0].wShowStringTopLeftX = UInt16.Parse(textBoxOSD1X.Text);
            m_struShowStrCfg.struStringInfo[0].wShowStringTopLeftY = UInt16.Parse(textBoxOSD1Y.Text);

            if (checkBoxOSD2.Checked)
            {
                m_struShowStrCfg.struStringInfo[1].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[1].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[1].sString             = textBoxOSD2.Text;
            m_struShowStrCfg.struStringInfo[1].wStringSize         = (ushort)textBoxOSD2.Text.Length;
            m_struShowStrCfg.struStringInfo[1].wShowStringTopLeftX = UInt16.Parse(textBoxOSD2X.Text);
            m_struShowStrCfg.struStringInfo[1].wShowStringTopLeftY = UInt16.Parse(textBoxOSD2Y.Text);

            if (checkBoxOSD3.Checked)
            {
                m_struShowStrCfg.struStringInfo[2].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[2].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[2].sString             = textBoxOSD3.Text;
            m_struShowStrCfg.struStringInfo[2].wStringSize         = (ushort)textBoxOSD3.Text.Length;
            m_struShowStrCfg.struStringInfo[2].wShowStringTopLeftX = UInt16.Parse(textBoxOSD3X.Text);
            m_struShowStrCfg.struStringInfo[2].wShowStringTopLeftY = UInt16.Parse(textBoxOSD3Y.Text);

            if (checkBoxOSD4.Checked)
            {
                m_struShowStrCfg.struStringInfo[3].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[3].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[3].sString             = textBoxOSD4.Text;
            m_struShowStrCfg.struStringInfo[3].wStringSize         = (ushort)textBoxOSD4.Text.Length;
            m_struShowStrCfg.struStringInfo[3].wShowStringTopLeftX = UInt16.Parse(textBoxOSD4X.Text);
            m_struShowStrCfg.struStringInfo[3].wShowStringTopLeftY = UInt16.Parse(textBoxOSD4Y.Text);

            if (checkBoxOSD5.Checked)
            {
                m_struShowStrCfg.struStringInfo[4].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[4].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[4].sString             = textBoxOSD5.Text;
            m_struShowStrCfg.struStringInfo[4].wStringSize         = (ushort)textBoxOSD5.Text.Length;
            m_struShowStrCfg.struStringInfo[4].wShowStringTopLeftX = UInt16.Parse(textBoxOSD5X.Text);
            m_struShowStrCfg.struStringInfo[4].wShowStringTopLeftY = UInt16.Parse(textBoxOSD5Y.Text);

            if (checkBoxOSD6.Checked)
            {
                m_struShowStrCfg.struStringInfo[5].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[5].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[5].sString             = textBoxOSD6.Text;
            m_struShowStrCfg.struStringInfo[5].wStringSize         = (ushort)textBoxOSD6.Text.Length;
            m_struShowStrCfg.struStringInfo[5].wShowStringTopLeftX = UInt16.Parse(textBoxOSD6X.Text);
            m_struShowStrCfg.struStringInfo[5].wShowStringTopLeftY = UInt16.Parse(textBoxOSD6Y.Text);

            if (checkBoxOSD7.Checked)
            {
                m_struShowStrCfg.struStringInfo[6].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[6].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[6].sString             = textBoxOSD7.Text;
            m_struShowStrCfg.struStringInfo[6].wStringSize         = (ushort)textBoxOSD7.Text.Length;
            m_struShowStrCfg.struStringInfo[6].wShowStringTopLeftX = UInt16.Parse(textBoxOSD7X.Text);
            m_struShowStrCfg.struStringInfo[6].wShowStringTopLeftY = UInt16.Parse(textBoxOSD7Y.Text);

            if (checkBoxOSD8.Checked)
            {
                m_struShowStrCfg.struStringInfo[7].wShowString = 1;
            }
            else
            {
                m_struShowStrCfg.struStringInfo[7].wShowString = 0;
            }
            m_struShowStrCfg.struStringInfo[7].sString             = textBoxOSD8.Text;
            m_struShowStrCfg.struStringInfo[7].wStringSize         = (ushort)textBoxOSD8.Text.Length;
            m_struShowStrCfg.struStringInfo[7].wShowStringTopLeftX = UInt16.Parse(textBoxOSD8X.Text);
            m_struShowStrCfg.struStringInfo[7].wShowStringTopLeftY = UInt16.Parse(textBoxOSD8Y.Text);

            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, false);

            if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_SHOWSTRING_V30, m_lChannel, ptrShowStrCfg, (UInt32)nSize))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                strErr   = "NET_DVR_SET_SHOWSTRING_V30 failed, error code= " + iLastErr;
                //设置字符叠加参数失败,输出错误号 Failed to set overlay parameters and output the error code
                MessageBox.Show(strErr);
            }
            else
            {
                MessageBox.Show("设置图像参数成功!");
            }

            Marshal.FreeHGlobal(ptrShowStrCfg);
        }
예제 #4
0
        private void btnPlaybackTime_Click(object sender, EventArgs e)
        {
            if (m_lPlayHandle >= 0)
            {
                //如果已经正在回放,先停止回放
                if (!CHCNetSDK.NET_DVR_StopPlayBack(m_lPlayHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StopPlayBack failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }

                m_bReverse        = false;
                btnReverse.Text   = "Reverse";
                labelReverse.Text = "切换为倒放";

                m_bPause        = false;
                btnPause.Text   = "||";
                labelPause.Text = "暂停";

                m_lPlayHandle = -1;

                PlaybackprogressBar.Value = 0;
            }

            CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA();
            struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara);
            struVodPara.struIDInfo.dwChannel = (uint)iChannelNum[(int)iSelIndex]; //通道号 Channel number
            struVodPara.hWnd = VideoPlayWnd.Handle;                               //回放窗口句柄

            //设置回放的开始时间 Set the starting time to search video files
            struVodPara.struBeginTime.dwYear   = (uint)dateTimeStart.Value.Year;
            struVodPara.struBeginTime.dwMonth  = (uint)dateTimeStart.Value.Month;
            struVodPara.struBeginTime.dwDay    = (uint)dateTimeStart.Value.Day;
            struVodPara.struBeginTime.dwHour   = (uint)dateTimeStart.Value.Hour;
            struVodPara.struBeginTime.dwMinute = (uint)dateTimeStart.Value.Minute;
            struVodPara.struBeginTime.dwSecond = (uint)dateTimeStart.Value.Second;

            //设置回放的结束时间 Set the stopping time to search video files
            struVodPara.struEndTime.dwYear   = (uint)dateTimeEnd.Value.Year;
            struVodPara.struEndTime.dwMonth  = (uint)dateTimeEnd.Value.Month;
            struVodPara.struEndTime.dwDay    = (uint)dateTimeEnd.Value.Day;
            struVodPara.struEndTime.dwHour   = (uint)dateTimeEnd.Value.Hour;
            struVodPara.struEndTime.dwMinute = (uint)dateTimeEnd.Value.Minute;
            struVodPara.struEndTime.dwSecond = (uint)dateTimeEnd.Value.Second;

            //按时间回放 Playback by time
            m_lPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_lUserID, ref struVodPara);
            if (m_lPlayHandle < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_PlayBackByTime_V40 failed, error code= " + iLastErr;
                MessageBox.Show(str);
                return;
            }

            uint iOutValue = 0;

            if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(m_lPlayHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号
                MessageBox.Show(str);
                return;
            }
            timerPlayback.Interval  = 1000;
            timerPlayback.Enabled   = true;
            btnStopPlayback.Enabled = true;
        }
예제 #5
0
        public bool DoGetDeviceResoureCfg(int iDeviceIndex, int iGroupNO = 0)
        {
            int  i = 0, j = 0;
            uint dwReturned = 0;
            int  dwSize     = 0;
            int  iLoopTime  = 0;

            if (g_deviceTree.g_struDeviceInfo[iDeviceIndex].iIPChanNum > 0)
            {
                if (g_deviceTree.g_struDeviceInfo[iDeviceIndex].iIPChanNum % (int)(CHCNetSDK.MAX_CHANNUM_V30) == 0)
                {
                    iLoopTime = g_deviceTree.g_struDeviceInfo[iDeviceIndex].iIPChanNum / (int)(CHCNetSDK.MAX_CHANNUM_V30);
                }
                else
                {
                    iLoopTime = g_deviceTree.g_struDeviceInfo[iDeviceIndex].iIPChanNum / (int)(CHCNetSDK.MAX_CHANNUM_V30) + 1;
                }
            }

            for (j = 0; j < iLoopTime; j++)
            {
                CHCNetSDK.NET_DVR_IPPARACFG_V40 struIPAccessCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40();
                iGroupNO           = j;
                struIPAccessCfgV40 = g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruIPParaCfgV40[iGroupNO];
                dwSize             = Marshal.SizeOf(struIPAccessCfgV40);
                IntPtr ptrIPAccessCfgV40 = Marshal.AllocHGlobal(dwSize);
                Marshal.StructureToPtr(struIPAccessCfgV40, ptrIPAccessCfgV40, false);

                //2008-9-15 13:44 ip input configuration
                g_deviceTree.g_struDeviceInfo[iDeviceIndex].bIPRet =
                    CHCNetSDK.NET_DVR_GetDVRConfig(g_deviceTree.g_struDeviceInfo[iDeviceIndex].lLoginID, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNO, ptrIPAccessCfgV40, (uint)dwSize, ref dwReturned);
                if (!g_deviceTree.g_struDeviceInfo[iDeviceIndex].bIPRet)
                {       ///device no support ip access
                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].lFirstEnableChanIndex = 0;
                    g_formList.AddLog(iDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_IPPARACFG_V40");
                    i = j + iGroupNO * CHCNetSDK.MAX_CHANNUM_V30;
                    if (i < g_deviceTree.g_struDeviceInfo[iDeviceIndex].iAnalogChanNum)
                    {
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iDeviceIndex = iDeviceIndex;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanIndex   = i;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChannelNO   = i + g_deviceTree.g_struDeviceInfo[iDeviceIndex].iStartChan;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].bEnable      = true;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanType    = AcsDemoPublic.DEMO_CHANNEL_TYPE.DEMO_CHANNEL_TYPE_ANALOG;
                        g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].chChanName = string.Format("Camera{0}", i + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iStartChan);;
                    }
                    else//clear the state of other channel
                    {
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iDeviceIndex = -1;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanIndex   = -1;
                        g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].bEnable      = false;
                        g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].chChanName = "";
                    }


                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].iGroupNO = -1;
                }
                else
                {
                    struIPAccessCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIPAccessCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40));
                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruIPParaCfgV40[iGroupNO] = struIPAccessCfgV40;
                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].iGroupNO = iGroupNO;
                    g_formList.AddLog(iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_GET_IPPARACFG_V40");
                    RefreshIPDevLocalCfg(iDeviceIndex);
                }
                Marshal.FreeHGlobal(ptrIPAccessCfgV40);
            }

            for (i = 0; i < g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAnalogChanNum; i++)
            {
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].iDeviceIndex = m_iDeviceIndex;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].iChanIndex   = i;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].iChannelNO   = i + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iStartChan;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].chChanName   = string.Format("Camera{0}", i + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iStartChan);

                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].bEnable     = true;
                g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanType     = AcsDemoPublic.DEMO_CHANNEL_TYPE.DEMO_CHANNEL_TYPE_ANALOG;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i].dwImageType = AcsDemoPublic.CHAN_ORIGINAL;
            }

            if ((g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum > 0) &&
                (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo > (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum - 1)))
            {
                for (i = 0; i < g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum && i < 16; i++)
                {
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].iDeviceIndex = m_iDeviceIndex;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].iChanIndex   = i + AcsDemoPublic.MIRROR_CHAN_INDEX;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].iChannelNO   = i + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].chChanName   = string.Format("MirrorChan{0}", i + 1);

                    //analog devices
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].bEnable     = true;
                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanType      = AcsDemoPublic.DEMO_CHANNEL_TYPE.DEMO_CHANNEL_TYPE_IP;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[i].dwImageType = AcsDemoPublic.CHAN_ORIGINAL;
                }
            }
            if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byZeroChanNum > 0)
            {
                for (i = 0; i < g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byZeroChanNum; i++)
                {
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struZeroChan[i].iDeviceIndex = m_iDeviceIndex;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struZeroChan[i].iChanIndex   = i + AcsDemoPublic.ZERO_CHAN_INDEX;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struZeroChan[i].chChanName   = string.Format("ZeroChan {0}", i);

                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struZeroChan[i].bEnable     = true;
                    g_deviceTree.g_struDeviceInfo[iDeviceIndex].pStruChanInfo[i].iChanType    = AcsDemoPublic.DEMO_CHANNEL_TYPE.DEMO_CHANNEL_TYPE_MIRROR;
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].struZeroChan[i].dwImageType = AcsDemoPublic.CHAN_ORIGINAL;
                }
            }
            return(g_deviceTree.g_struDeviceInfo[iDeviceIndex].bIPRet);
        }
예제 #6
0
        private void btnGet_Click(object sender, EventArgs e)
        {
            uint dwCommand = 0;

            string[] strCommand            = { "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50", "NET_DVR_GET_VERIFY_WEEK_PLAN", "NET_DVR_GET_WEEK_PLAN_CFG" };
            int      weekPlanNumberWPIndex = 0;

            uint   dwReturned = 0;
            string strTemp    = null;
            uint   dwSize     = (uint)Marshal.SizeOf(m_struPlanCfg);

            m_struPlanCfg.dwSize = dwSize;
            IntPtr ptrPlanCfg = Marshal.AllocHGlobal((int)dwSize);

            Marshal.StructureToPtr(m_struPlanCfg, ptrPlanCfg, false);
            switch (cbDeviceType.SelectedIndex)
            {
            case 0:
                dwCommand = (uint)CHCNetSDK.NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50;
                uint dwConSize = (uint)Marshal.SizeOf(m_struPlanCond);
                m_struPlanCond.dwSize = dwConSize;
                uint.TryParse(textBoxWPNumber.Text, out m_struPlanCond.dwWeekPlanNumber);
                ushort.TryParse(textBoxLCID.Text, out m_struPlanCond.wLocalControllerID);

                IntPtr ptrPlanCon = Marshal.AllocHGlobal((int)dwConSize);
                Marshal.StructureToPtr(m_struPlanCond, ptrPlanCon, false);
                IntPtr ptrDwReturned = Marshal.AllocHGlobal(4);

                if (!CHCNetSDK.NET_DVR_GetDeviceConfig(m_lUserID, dwCommand, 1, ptrPlanCon, dwConSize, ptrDwReturned, ptrPlanCfg, dwSize))
                {
                    Marshal.FreeHGlobal(ptrPlanCfg);
                    Marshal.FreeHGlobal(ptrPlanCon);
                    Marshal.FreeHGlobal(ptrDwReturned);
                    strTemp = string.Format("{0} FAIL, ERROR CODE {1}", strCommand[cbDeviceType.SelectedIndex], CHCNetSDK.NET_DVR_GetLastError());
                    MessageBox.Show(strTemp);
                    return;
                }
                else
                {
                    dwReturned = (uint)Marshal.ReadInt32(ptrDwReturned);
                    Marshal.FreeHGlobal(ptrDwReturned);
                    Marshal.FreeHGlobal(ptrPlanCon);
                    strTemp = string.Format("{0} Succ", strCommand[cbDeviceType.SelectedIndex]);
                    MessageBox.Show(strTemp);
                }
                break;

            case 1:
                dwCommand = (uint)CHCNetSDK.NET_DVR_GET_VERIFY_WEEK_PLAN;
                int.TryParse(textBoxWPNumber.Text, out weekPlanNumberWPIndex);

                if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, dwCommand, weekPlanNumberWPIndex, ptrPlanCfg, dwSize, ref dwReturned))
                {
                    Marshal.FreeHGlobal(ptrPlanCfg);
                    strTemp = string.Format("{0} FAIL, ERROR CODE {1}", strCommand[cbDeviceType.SelectedIndex], CHCNetSDK.NET_DVR_GetLastError());
                    MessageBox.Show(strTemp);
                    return;
                }
                else
                {
                    strTemp = string.Format("{0} Succ", strCommand[cbDeviceType.SelectedIndex]);
                    MessageBox.Show(strTemp);
                }
                break;

            case 2:
                dwCommand = (uint)CHCNetSDK.NET_DVR_GET_WEEK_PLAN_CFG;
                int.TryParse(textBoxWPNumber.Text, out weekPlanNumberWPIndex);

                if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, dwCommand, weekPlanNumberWPIndex, ptrPlanCfg, dwSize, ref dwReturned))
                {
                    Marshal.FreeHGlobal(ptrPlanCfg);
                    strTemp = string.Format("{0} FAIL, ERROR CODE {1}", strCommand[cbDeviceType.SelectedIndex], CHCNetSDK.NET_DVR_GetLastError());
                    MessageBox.Show(strTemp);
                    return;
                }
                else
                {
                    strTemp = string.Format("{0} Succ", strCommand[cbDeviceType.SelectedIndex]);
                    MessageBox.Show(strTemp);
                }
                break;

            default:
                Marshal.FreeHGlobal(ptrPlanCfg);
                MessageBox.Show("unknown command");
                return;
            }
            m_struPlanCfg        = (CHCNetSDK.NET_DVR_WEEK_PLAN_CFG)Marshal.PtrToStructure(ptrPlanCfg, typeof(CHCNetSDK.NET_DVR_WEEK_PLAN_CFG));
            cbDate.SelectedIndex = 0;
            UpdateList();

            if (1 == m_struPlanCfg.byEnable)
            {
                checkBoxEnableWP.Checked = true;
            }
            else
            {
                checkBoxEnableWP.Checked = false;
            }

            Marshal.FreeHGlobal(ptrPlanCfg);
        }
예제 #7
0
        public void InfoIPChannel()
        {
            uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40);

            IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);

            Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false);

            uint dwReturn = 0;
            int  iGroupNo = 0; //该Demo仅获取第一组64个通道,如果设备IP通道大于64路,需要按组号0~i多次调用NET_DVR_GET_IPPARACFG_V40获取

            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str1     = "NET_DVR_GET_IPPARACFG_V40 failed, error code= " + iLastErr; //获取IP资源配置信息失败,输出错误号
                MessageBox.Show(str1);
            }
            else
            {
                // succ
                m_struIpParaCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40));

                for (i = 0; i < dwAChanTotalNum; i++)
                {
                    ListAnalogChannel(i + 1, m_struIpParaCfgV40.byAnalogChanEnable[i]);
                    iChannelNum[i] = i + (int)DeviceInfo.byStartChan;
                }

                byte byStreamType;
                uint iDChanNum = 64;

                if (dwDChanTotalNum < 64)
                {
                    iDChanNum = dwDChanTotalNum; //如果设备IP通道小于64路,按实际路数获取
                }

                for (i = 0; i < iDChanNum; i++)
                {
                    iChannelNum[i + dwAChanTotalNum] = i + (int)m_struIpParaCfgV40.dwStartDChan;

                    byStreamType     = m_struIpParaCfgV40.struStreamMode[i].byGetStreamType;
                    m_unionGetStream = m_struIpParaCfgV40.struStreamMode[i].uGetStream;

                    switch (byStreamType)
                    {
                    //目前NVR仅支持0- 直接从设备取流一种方式
                    case 0:
                        dwSize = (uint)Marshal.SizeOf(m_unionGetStream);
                        IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)dwSize);
                        Marshal.StructureToPtr(m_unionGetStream, ptrChanInfo, false);
                        m_struChanInfo = (CHCNetSDK.NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(CHCNetSDK.NET_DVR_IPCHANINFO));

                        //列出IP通道
                        ListIPChannel(i + 1, m_struChanInfo.byEnable, m_struChanInfo.byIPID);
                        Marshal.FreeHGlobal(ptrChanInfo);
                        break;

                    default:
                        break;
                    }
                }
            }
            Marshal.FreeHGlobal(ptrIpParaCfgV40);
        }
예제 #8
0
        /// <summary>
        /// 释放SDK资源
        /// </summary>
        /// <returns>true:释放成功 false:释放失败</returns>
        public override bool Cleanup()
        {
            bool result = CHCNetSDK.NET_DVR_Cleanup();

            return(result);
        }
예제 #9
0
        /// <summary>
        /// 获取错误码
        /// </summary>
        /// <returns>错误码</returns>
        public override uint GetLastError()
        {
            uint result = CHCNetSDK.NET_DVR_GetLastError();

            return(result);
        }
예제 #10
0
        //static Task task = null;
        public int Play(string device_ip, string device_username, string device_password, string device_port, string key)
        {
            try
            {
                //if (ps_data_callback == null)
                //{
                //    return "未设置数据回调的实体";
                //}
                CHCNetSDK.NET_DVR_SetLogToFile(0, "", true);
                CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO();
                //设备IP地址或者域名
                byte[] byIP = System.Text.Encoding.Default.GetBytes(device_ip);
                struLogInfo.sDeviceAddress = new byte[129];
                byIP.CopyTo(struLogInfo.sDeviceAddress, 0);

                //设备用户名
                byte[] byUserName = System.Text.Encoding.Default.GetBytes(device_username);
                struLogInfo.sUserName = new byte[64];
                byUserName.CopyTo(struLogInfo.sUserName, 0);

                //设备密码
                byte[] byPassword = System.Text.Encoding.Default.GetBytes(device_password);
                struLogInfo.sPassword = new byte[64];
                byPassword.CopyTo(struLogInfo.sPassword, 0);

                struLogInfo.wPort = ushort.Parse(device_port);//设备服务端口号
                CHCNetSDK.NET_DVR_DEVICEINFO_V40 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40();
                int m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo);

                if (m_lUserID == -1)
                {
                    uint err = CHCNetSDK.NET_DVR_GetLastError();
                }

                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数
                }
                IntPtr pUser = Marshal.StringToBSTR(key);
                //if (task == null)
                //{
                //    task = Task.Factory.StartNew(HIKDataInput);
                //}
                //Task task = Task.Factory.StartNew(HIKDataInput);

                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.lChannel        = 1;    //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;    //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;    //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true; //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 1;    //播放库播放缓冲区最大缓冲帧数
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;
                if (!dic_cache.ContainsKey(key))
                {
                    dic_cache.Add(key, new List <byte>());
                }
                int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, /*null*/ RealData, pUser);
                if (m_lRealHandle < 0)//播放失败
                {
                    LogHelper.Print("播放失败:" + m_lRealHandle);
                }
                else
                {
                }
                return(m_lRealHandle);
            }
            catch (Exception ex)
            {
                return(-2);
            }
        }
예제 #11
0
        /// <summary>
        /// 用户注销
        /// </summary>
        /// <param name="loginId">用户ID值,从HikVisionLogin获取</param>
        /// <returns>true:注销成功 false:注销失败</returns>
        public override bool LogOut(DeviceInfo deviceInfo)
        {
            bool result = CHCNetSDK.NET_DVR_Logout(deviceInfo.loginId);

            return(result);
        }
예제 #12
0
 //private static Api_HIK _instance;
 //public static Api_HIK Instance
 //{
 //    get
 //    {
 //        if (_instance == null)
 //        {
 //            _instance = new Api_HIK();
 //        }
 //        return _instance;
 //    }
 //}
 //PSDATACALLBACK ps_data_callback = null;
 //private string key;
 public Api_HIK()
 {
     bool m_bInitSDK = CHCNetSDK.NET_DVR_Init();
 }
예제 #13
0
 static HIKVisionRenderableControl()
 {
     CHCNetSDK.NET_DVR_Init();
 }
예제 #14
0
파일: PreSet.cs 프로젝트: ramuasece/.net
        private void PtzSet_Click(object sender, EventArgs e)
        {
            int    flag = 1;
            float  wPanPos, wTiltPos, wZoomPos;
            String str1, str2, str3;

            if (comboBox2.Text == "")
            {
                MessageBox.Show("Please input the operation type  ");
            }

            /* wPanPos = ushort.Parse(textBoxPanPos.Text);
             * wTiltPos = ushort.Parse(textBoxTiltPos.Text);
             * wZoomPos = ushort.Parse(textBoxZoomPos.Text);*/
            switch (comboBox2.Items.IndexOf(comboBox2.Text))//下拉框中的数据
            {
            case 0:

                if (textBoxPanPos.Text == "" || textBoxTiltPos.Text == "" ||
                    textBoxZoomPos.Text == "")
                {
                    MessageBox.Show("Please input prarameters of P,T,Z: ");
                    return;
                }
                else
                {
                    flag = 0;
                    m_struPtzCfg.wAction = 1;
                    //m_struPtzCfg.wPanPos = ushort.Parse(textBoxPanPos.Text);

                    /* m_struPtzCfg.wPanPos = Convert.ToUInt16(wPanPos);
                     * m_struPtzCfg.wTiltPos = wTiltPos;
                     * m_struPtzCfg.wZoomPos = wZoomPos;*/
                    /* m_struPtzCfg.wPanPos = Convert.ToUInt16(Convert.ToString(Convert.ToUInt32(Convert.ToString(wPanPos * 10, 16)), 10));
                     * m_struPtzCfg.wTiltPos = Convert.ToUInt16(Convert.ToString(Convert.ToUInt32(Convert.ToString(wTiltPos*10, 16)), 10));
                     * m_struPtzCfg.wZoomPos = Convert.ToUInt16(Convert.ToString(Convert.ToUInt32(Convert.ToString(wZoomPos*10, 16)), 10));*/
                    str1 = Convert.ToString(float.Parse(textBoxPanPos.Text) * 10);
                    m_struPtzCfg.wPanPos = (ushort)(Convert.ToUInt16(str1, 16));
                    str2 = Convert.ToString(float.Parse(textBoxTiltPos.Text) * 10);
                    m_struPtzCfg.wTiltPos = (ushort)(Convert.ToUInt16(str2, 16));
                    str3 = Convert.ToString(float.Parse(textBoxZoomPos.Text) * 10);
                    m_struPtzCfg.wZoomPos = (ushort)(Convert.ToUInt16(str3, 16));

                    /* m_struPtzCfg.wTiltPos = ushort.Parse(textBoxTiltPos.Text);
                     * m_struPtzCfg.wZoomPos = ushort.Parse(textBoxZoomPos.Text);*/
                }
                break;

            case 1:
                if (textBoxPanPos.Text == "")
                {
                    MessageBox.Show("Please input prarameters of P: ");
                    return;
                }
                else
                {
                    flag = 0;
                    m_struPtzCfg.wAction = 2;

                    //wPanPos = float.Parse(textBoxPanPos.Text);
                    str1 = Convert.ToString(float.Parse(textBoxPanPos.Text) * 10);
                    m_struPtzCfg.wPanPos = (ushort)(Convert.ToUInt16(str1, 16));

                    //m_struPtzCfg.wPanPos = ushort.Parse(textBoxPanPos.Text);
                }
                break;

            case 2:
                if (textBoxTiltPos.Text == "")
                {
                    MessageBox.Show("Please input prarameters of T: ");
                    return;
                }
                else
                {
                    flag = 0;
                    m_struPtzCfg.wAction  = 3;
                    m_struPtzCfg.wTiltPos = ushort.Parse(textBoxTiltPos.Text);

                    str2 = Convert.ToString(float.Parse(textBoxTiltPos.Text) * 10);
                    m_struPtzCfg.wTiltPos = (ushort)(Convert.ToUInt16(str2, 16));
                }
                break;

            case 3:
                if (textBoxZoomPos.Text == "")
                {
                    MessageBox.Show("Please input prarameters of Z: ");
                    return;
                }
                else
                {
                    flag = 0;
                    m_struPtzCfg.wAction  = 4;
                    m_struPtzCfg.wZoomPos = ushort.Parse(textBoxZoomPos.Text);

                    str3 = Convert.ToString(float.Parse(textBoxZoomPos.Text) * 10);
                    m_struPtzCfg.wZoomPos = (ushort)(Convert.ToUInt16(str3, 16));
                }
                break;

            case 4:
                if (textBoxTiltPos.Text == "" || textBoxPanPos.Text == "")
                {
                    MessageBox.Show("Please input prarameters of P,T: ");
                    return;
                }
                else
                {
                    flag = 0;
                    m_struPtzCfg.wAction  = 5;
                    m_struPtzCfg.wPanPos  = ushort.Parse(textBoxPanPos.Text);
                    m_struPtzCfg.wTiltPos = ushort.Parse(textBoxTiltPos.Text);

                    str1 = Convert.ToString(float.Parse(textBoxPanPos.Text) * 10);
                    m_struPtzCfg.wPanPos = (ushort)(Convert.ToUInt16(str1, 16));
                    str2 = Convert.ToString(float.Parse(textBoxTiltPos.Text) * 10);
                    m_struPtzCfg.wTiltPos = (ushort)(Convert.ToUInt16(str2, 16));
                }
                break;
            }


            while (flag == 0)
            {
                Int32  nSize     = Marshal.SizeOf(m_struPtzCfg);
                IntPtr ptrPtzCfg = Marshal.AllocHGlobal(nSize);
                Marshal.StructureToPtr(m_struPtzCfg, ptrPtzCfg, false);

                if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_PTZPOS, 1, ptrPtzCfg, (UInt32)nSize))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_SetDVRConfig failed, error code= " + iLastErr;
                    //设置POS参数失败
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    MessageBox.Show("设置成功!");
                    break;
                }

                Marshal.FreeHGlobal(ptrPtzCfg);
            }
            return;
        }
예제 #15
0
        private void buttonStart_Click(object sender, EventArgs e)
        {
            if (-1 != m_lInfoSynHandle)
            {
                if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lInfoSynHandle))
                {
                    m_lInfoSynHandle = -1;
                }
            }

            if (m_bStart)
            {
                return;
            }

            m_bStart           = true;
            g_fInfoSynCallback = new CHCNetSDK.RemoteConfigCallback(ProcessInfoSynCallback);
            string sURL = GetRoute(m_command);

            if (sURL == null)
            {
                return;
            }

            IntPtr ptrURL = Marshal.StringToHGlobalAnsi(sURL);

            m_lInfoSynHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_JSON_CONFIG, ptrURL, sURL.Length, g_fInfoSynCallback, this.Handle);

            string strInfoSyn = null;

            if (m_command == SynInfoCommand.USER_INFO_SYN)
            {
                CUserInfoSynCond JsonUserInfoSynCond = new CUserInfoSynCond();
                JsonUserInfoSynCond.UserInfoSyncCond            = new CUserInfoSynCondContent();
                JsonUserInfoSynCond.UserInfoSyncCond.command    = "startSync";
                JsonUserInfoSynCond.UserInfoSyncCond.maxResults = 30;

                strInfoSyn = JsonConvert.SerializeObject(JsonUserInfoSynCond);
            }
            else
            {
                CCardInfoSynCond JsonCardInfoSynCond = new CCardInfoSynCond();
                JsonCardInfoSynCond.CardInfoSyncCond            = new CCardInfoSynCondContent();
                JsonCardInfoSynCond.CardInfoSyncCond.command    = "startSync";
                JsonCardInfoSynCond.CardInfoSyncCond.maxResults = 30;

                strInfoSyn = JsonConvert.SerializeObject(JsonCardInfoSynCond);
            }

            IntPtr ptrInfoSyn = Marshal.StringToHGlobalAnsi(strInfoSyn);

            if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lInfoSynHandle, (int)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_SEND_JSON_DATA, ptrInfoSyn, (uint)strInfoSyn.Length))
            {
                Marshal.FreeHGlobal(ptrInfoSyn);
                return;
            }
            Marshal.FreeHGlobal(ptrInfoSyn);

            //获取结果
            Thread thread = new Thread(new ThreadStart(GetSynResult));  

            thread.IsBackground = true;
            thread.Start();
        }
예제 #16
0
        /// <summary>
        /// 关闭实时预览
        /// </summary>
        /// <param name="realHandle">预览句柄</param>
        /// <returns>true:关闭成功 false:关闭失败</returns>
        public override bool StopPreview(DeviceInfo deviceInfo)
        {
            bool result = CHCNetSDK.NET_DVR_StopRealPlay(deviceInfo.realHandle);

            return(result);
        }
예제 #17
0
        protected override void DefWndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case 1001:
                int iErrorMsg = m.WParam.ToInt32();
                if (iErrorMsg == 1)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_FAILED");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 2)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_EXCEPTION");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 3)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_OTHER_ERROR");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 4)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Succ";
                    string strTemp = string.Format("NET_SDK_CALLBACK_FINISH");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                m_bStart = false;
                m_bFirst = true;
                if (-1 != m_lInfoSynHandle)
                {
                    if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lInfoSynHandle))
                    {
                        m_lInfoSynHandle = -1;
                    }
                }
                break;

            case 1002:
                m_bGetResult = true;
                break;

            case 1003:
                IntPtr ptrResponse       = (IntPtr)m.WParam.ToInt32();
                string strResponseStatus = Marshal.PtrToStringAnsi(ptrResponse);

                string strResponse = null;

                if (m_bFirst)
                {
                    m_bFirst = false;
                    CResponseStatus JsonResponseStatus = new CResponseStatus();
                    strResponse    = strResponseStatus;
                    m_iCurProgress = 0;
                }
                else
                {
                    if (m_command == SynInfoCommand.USER_INFO_SYN)
                    {
                        CUserInfoSyn JsonResponseStatus = new CUserInfoSyn();
                        JsonResponseStatus.UserInfoSync = new CUserInfoSynContent();
                        if (JsonResponseStatus.UserInfoSync != null)
                        {
                            strResponse    = JsonConvert.SerializeObject(JsonResponseStatus.UserInfoSync.SyncInfo);
                            m_iCurProgress = JsonResponseStatus.UserInfoSync.progressValue;
                        }
                        else
                        {
                            strResponse = strResponseStatus;
                        }
                    }
                    else
                    {
                        CCardInfoSyn JsonResponseStatus = new CCardInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus);
                        if (JsonResponseStatus.CardInfoSync != null)
                        {
                            strResponse    = JsonConvert.SerializeObject(JsonResponseStatus.CardInfoSync.SyncInfo);
                            m_iCurProgress = JsonResponseStatus.CardInfoSync.progressValue;
                        }
                        else
                        {
                            strResponse = strResponseStatus;
                        }
                    }
                }

                ListViewItem lvItem = new ListViewItem();
                string       strTmp = null;
                lvItem.Text = "Succ";
                strTmp      = string.Format("Percent:{0}-{1}", m_iCurProgress, strResponse);
                lvItem.SubItems.Add(strTmp);
                this.AddList(listViewResponse, lvItem);
                Marshal.FreeHGlobal(ptrResponse);
                break;

            default:
                base.DefWndProc(ref m);
                break;
            }
        }
예제 #18
0
        private void btnStopDecode_Click(object sender, EventArgs e)
        {
            if (comboBoxStreamMode.SelectedIndex == 0) //实时流解码:登录编码器获取实时流然后转发给解码器
            {
                //停止预览 Stop live view
                if (lRealHandle >= 0)
                {
                    if (!CHCNetSDK.NET_DVR_StopRealPlay(lRealHandle))
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        strErr   = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                        MessageBox.Show(strErr);
                        return;
                    }
                }

                //注销登录 Logout the device
                if (lUserID >= 0)
                {
                    if (!CHCNetSDK.NET_DVR_Logout(lUserID))
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        strErr   = "NET_DVR_Logout failed, error code= " + iLastErr;
                        MessageBox.Show(strErr);
                        return;
                    }
                }

                //停止被动解码 Stop the passive decoding
                if (!CHCNetSDK.NET_DVR_MatrixStopPassiveDecode(lPassiveHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    strErr   = "NET_DVR_MatrixStopPassiveDecode failed, error code= " + iLastErr;
                    MessageBox.Show(strErr);
                    return;
                }
                lPassiveHandle = -1;
                MessageBox.Show("Successful to stop the passive decoding!");
            }
            else //文件流解码:读取文件里面的数据发送给解码器
            {
                hExitThread = true;

                if (hFileHandle != null)
                {
                    hFileHandle.Close();
                    hFileHandle = null;
                }

                //停止被动解码 Stop the passive decoding
                if (!CHCNetSDK.NET_DVR_MatrixStopPassiveDecode(lPassiveHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    strErr   = "NET_DVR_MatrixStopPassiveDecode failed, error code= " + iLastErr;
                    MessageBox.Show(strErr);
                    return;
                }
                lPassiveHandle = -1;
                MessageBox.Show("Successful to stop the passive decoding!");
            }
        }
예제 #19
0
        /// <summary>
        /// 使用线程登录(使用)
        /// </summary>
        public void ThreadLogin()
        {
            int iDelay = 0;/*\ 延迟 /*/

            while (!m_bTerminated)
            {
                if (m_lstLoginInfo.Count == 0)
                {
                    Thread.Sleep(1000);
                }
                else
                {
                    iDelay = 0;
                    if (m_lstLoginInfo.Count > 0)
                    {
                        for (int i = 0; i < m_lstLoginInfo.Count; i++)
                        {
                            if (m_lstLoginInfo[i].iHandle == -1)
                            {
                                NET_DVR_USER_LOGIN_INFO struLoginInfo = new NET_DVR_USER_LOGIN_INFO();
                                NET_DVR_DEVICEINFO_V40  devInfor      = new NET_DVR_DEVICEINFO_V40();
                                devInfor.byRes2 = new byte[246];
                                devInfor.struDeviceV30.sSerialNumber = new byte[48];
                                devInfor.byRes2 = new byte[246];
                                devInfor.struDeviceV30.sSerialNumber = new byte[48];
                                struLoginInfo.sDeviceAddress         = m_lstLoginInfo[i].sIp;
                                struLoginInfo.wPort         = Convert.ToUInt16(m_lstLoginInfo[i].sPort); //设备服务端口
                                struLoginInfo.sUserName     = m_lstLoginInfo[i].sUser;                   //设备登录用户名
                                struLoginInfo.sPassword     = m_lstLoginInfo[i].sPass;                   //设备登录密码
                                struLoginInfo.bUseAsynLogin = false;                                     //同步登录方式(异步现在设备不在线时会报错,不知道啥原因)
                                struLoginInfo.byLoginMode   = 0;
                                //struLoginInfo.byHttps = 2;
                                //m_lstLoginInfo[i].iHandle = HikVideoAPI.NET_HIK_Login_V40(ref struLoginInfo, ref devInfor);
                                m_lstLoginInfo[i].iHandle = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref devInfor);
                                //将通道信息和对应的ip存储到list集合中
                                if (m_lstLoginInfo[i].iHandle >= 0)
                                {
                                    CSaveHikChannelInfo oSaveHikChannelInfo = new CSaveHikChannelInfo();
                                    oSaveHikChannelInfo.m_lstHikChannelInfo = new List <NET_DVR_IPPARACFG_V40>();
                                    oSaveHikChannelInfo.m_sStreamIp         = m_lstLoginInfo[i].sIp;
                                    NET_DVR_IPPARACFG_V40 oIpParaCfgV40 = new NET_DVR_IPPARACFG_V40();
                                    uint   dwSize          = (uint)Marshal.SizeOf(oIpParaCfgV40);
                                    IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);
                                    Marshal.StructureToPtr(oIpParaCfgV40, ptrIpParaCfgV40, false);
                                    uint dwReturn = 0;
                                    //int iGroupNo = 0; //该Demo仅获取第一组64个通道,如果设备IP通道大于64路,需要按组号0~i多次调用NET_DVR_GET_IPPARACFG_V40获取
                                    /*\ 共16组每组64个 /*/
                                    for (int iGroupNo = 0; iGroupNo < 15; iGroupNo++)
                                    {
                                        if (CHCNetSDK.NET_DVR_GetDVRConfig(m_lstLoginInfo[i].iHandle, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn))
                                        {
                                            lock (m_oSingleLock)
                                            {
                                                oIpParaCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40));
                                                oSaveHikChannelInfo.m_lstHikChannelInfo.Add(oIpParaCfgV40);
                                                m_lstSaveHikChannelInfo.Add(oSaveHikChannelInfo);
                                            }
                                        }
                                    }
                                    Marshal.FreeHGlobal(ptrIpParaCfgV40);
                                }
                            }
                        }
                        while (!m_bTerminated)
                        {
                            iDelay++;
                            Thread.Sleep(1000);
                            if (iDelay > 10)
                            {
                                break;
                            }
                        }
                    }
                }
            }
        }
예제 #20
0
        private void btnSendData_Click(object sender, EventArgs e)
        {
            if (comboBoxStreamMode.SelectedIndex == 0) //实时流解码:登录编码器获取实时流然后转发给解码器
            {
                string DVRIPAddress  = textBoxDevAddr.Text;
                Int16  DVRPortNumber = Int16.Parse(textBoxDevPort.Text);
                string DVRUserName   = textBoxUserName.Text;
                string DVRPassword   = textBoxPassword.Text;

                //登录设备 Login the device
                CHCNetSDK.NET_DVR_DEVICEINFO_V30 m_struDeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
                lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
                if (lUserID < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    strErr   = "NET_DVR_Login_V30 failed, error code= " + iLastErr;
                    //登录失败,输出错误号 Failed to login and output the error code
                    MessageBox.Show(strErr);
                    return;
                }
                else
                {
                    CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                    lpPreviewInfo.hPlayWnd     = IntPtr.Zero;                                               //预览窗口设为NULL,只取流不解码
                    lpPreviewInfo.lChannel     = Int32.Parse(textBoxChannel.Text);                          //预te览的设备通道
                    lpPreviewInfo.dwStreamType = (uint)comboBoxStreamType.SelectedIndex;                    //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                    lpPreviewInfo.dwLinkMode   = (uint)comboBoxRealProtol.SelectedIndex;                    //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                    lpPreviewInfo.bBlocked     = true;                                                      //0- 非阻塞取流,1- 阻塞取流

                    CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
                    IntPtr pUser = new IntPtr();                                                            //用户数据

                    //打开预览 Start live view
                    lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(lUserID, ref lpPreviewInfo, RealData, pUser);
                    if (lRealHandle < 0)
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        strErr   = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr;
                        //预览失败,输出错误号 Failed to start live view and output the error code
                        MessageBox.Show(strErr);
                        return;
                    }
                    else
                    {
                        //预览取流成功 Success to start live view
                        MessageBox.Show("Start to send the steam data to the decoder!");
                    }
                }
            }
            else //文件流解码:读取文件里面的数据发送给解码器
            {
                int iDataSize = Int32.Parse(textBoxReadSize.Text);
                if (iDataSize < 1 || iDataSize > 512)
                {
                    MessageBox.Show("Please set a applicable value!");
                    return;
                }

                iStreamSize = int.Parse(textBoxReadSize.Text);

                if (hFileHandle != null)
                {
                    hFileHandle.Close();
                    hFileHandle = null;
                }
                hFileHandle = new FileStream(textBoxFilePath.Text, FileMode.Open, FileAccess.Read); //打开文件 Open the file
                if (hFileHandle == null)
                {
                    return;
                }

                int lHandle = lPassiveHandle;
                filetrd = new Thread(FileThreadTask); //创建读取文件数据的线程(仅供参考)
                filetrd.IsBackground = true;
                filetrd.Start((object)lHandle);
                MessageBox.Show("Start to send the file data to the decoder!");
            }
        }
예제 #21
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            listViewFile.Items.Clear();//清空文件列表

            CHCNetSDK.NET_DVR_FILECOND_V40 struFileCond_V40 = new CHCNetSDK.NET_DVR_FILECOND_V40();

            struFileCond_V40.lChannel   = iChannelNum[(int)iSelIndex]; //通道号 Channel number
            struFileCond_V40.dwFileType = 0xff;                        //0xff-全部,0-定时录像,1-移动侦测,2-报警触发,...
            struFileCond_V40.dwIsLocked = 0xff;                        //0-未锁定文件,1-锁定文件,0xff表示所有文件(包括锁定和未锁定)

            //设置录像查找的开始时间 Set the starting time to search video files
            struFileCond_V40.struStartTime.dwYear   = (uint)dateTimeStart.Value.Year;
            struFileCond_V40.struStartTime.dwMonth  = (uint)dateTimeStart.Value.Month;
            struFileCond_V40.struStartTime.dwDay    = (uint)dateTimeStart.Value.Day;
            struFileCond_V40.struStartTime.dwHour   = (uint)dateTimeStart.Value.Hour;
            struFileCond_V40.struStartTime.dwMinute = (uint)dateTimeStart.Value.Minute;
            struFileCond_V40.struStartTime.dwSecond = (uint)dateTimeStart.Value.Second;

            //设置录像查找的结束时间 Set the stopping time to search video files
            struFileCond_V40.struStopTime.dwYear   = (uint)dateTimeEnd.Value.Year;
            struFileCond_V40.struStopTime.dwMonth  = (uint)dateTimeEnd.Value.Month;
            struFileCond_V40.struStopTime.dwDay    = (uint)dateTimeEnd.Value.Day;
            struFileCond_V40.struStopTime.dwHour   = (uint)dateTimeEnd.Value.Hour;
            struFileCond_V40.struStopTime.dwMinute = (uint)dateTimeEnd.Value.Minute;
            struFileCond_V40.struStopTime.dwSecond = (uint)dateTimeEnd.Value.Second;

            //开始录像文件查找 Start to search video files
            m_lFindHandle = CHCNetSDK.NET_DVR_FindFile_V40(m_lUserID, ref struFileCond_V40);

            if (m_lFindHandle < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_FindFile_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                MessageBox.Show(str);
                return;
            }
            else
            {
                CHCNetSDK.NET_DVR_FINDDATA_V30 struFileData = new CHCNetSDK.NET_DVR_FINDDATA_V30();;
                while (true)
                {
                    //逐个获取查找到的文件信息 Get file information one by one.
                    int result = CHCNetSDK.NET_DVR_FindNextFile_V30(m_lFindHandle, ref struFileData);

                    if (result == CHCNetSDK.NET_DVR_ISFINDING)  //正在查找请等待 Searching, please wait
                    {
                        continue;
                    }
                    else if (result == CHCNetSDK.NET_DVR_FILE_SUCCESS) //获取文件信息成功 Get the file information successfully
                    {
                        str1 = struFileData.sFileName;

                        str2 = Convert.ToString(struFileData.struStartTime.dwYear) + "-" +
                               Convert.ToString(struFileData.struStartTime.dwMonth) + "-" +
                               Convert.ToString(struFileData.struStartTime.dwDay) + " " +
                               Convert.ToString(struFileData.struStartTime.dwHour) + ":" +
                               Convert.ToString(struFileData.struStartTime.dwMinute) + ":" +
                               Convert.ToString(struFileData.struStartTime.dwSecond);

                        str3 = Convert.ToString(struFileData.struStopTime.dwYear) + "-" +
                               Convert.ToString(struFileData.struStopTime.dwMonth) + "-" +
                               Convert.ToString(struFileData.struStopTime.dwDay) + " " +
                               Convert.ToString(struFileData.struStopTime.dwHour) + ":" +
                               Convert.ToString(struFileData.struStopTime.dwMinute) + ":" +
                               Convert.ToString(struFileData.struStopTime.dwSecond);

                        listViewFile.Items.Add(new ListViewItem(new string[] { str1, str2, str3 }));//将查找的录像文件添加到列表中
                    }
                    else if (result == CHCNetSDK.NET_DVR_FILE_NOFIND || result == CHCNetSDK.NET_DVR_NOMOREFILE)
                    {
                        break; //未查找到文件或者查找结束,退出   No file found or no more file found, search is finished
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
예제 #22
0
        private void GetEagleChannelAblity()//判断通道码流是否是鹰眼码流  对应的接口命令是 NET_DVR_GET_SINGLE_CHANNELINFO
        {
            const uint XML_ABILITY_OUT_LEN = 4 * 1024;
            IntPtr     ptrCoundBuffer;

            string pOutBuf    = "\0";
            uint   dwcondSize = 0;

            //[out]
            dwcondSize = sizeof(int);
            //CTinyXmlTrans XMLBASE = new CTinyXmlTrans();
            uint dwXmlSize = XML_ABILITY_OUT_LEN;

            if (g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo != null && g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum > 0)
            {
                for (int i = 0; i < g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum; i++)
                {
                    if (i >= Configurations.CameraCount)
                    {
                        break;
                    }
                    if (g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i + g_struDeviceInfo[m_iDeviceIndex].iGroupNO * 64].iChannelNO > 0)
                    {//存在的通道号
                        IntPtr m_pXmlOutBuf;
                        m_pXmlOutBuf   = Marshal.AllocHGlobal((Int32)XML_ABILITY_OUT_LEN);
                        ptrCoundBuffer = Marshal.AllocHGlobal((int)dwcondSize);
                        int m_lChannel = g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[i + g_struDeviceInfo[m_iDeviceIndex].iGroupNO * 64].iChannelNO;
                        Marshal.WriteInt32(ptrCoundBuffer, m_lChannel);
                        CHCNetSDK.NET_DVR_STD_CONFIG struCfg = new CHCNetSDK.NET_DVR_STD_CONFIG();
                        struCfg.lpCondBuffer = ptrCoundBuffer;
                        struCfg.dwCondSize   = dwcondSize;
                        struCfg.byDataType   = 1;
                        struCfg.lpXmlBuffer  = m_pXmlOutBuf;
                        struCfg.dwXmlSize    = dwXmlSize;
                        int    dwSTDSize = Marshal.SizeOf(struCfg);
                        IntPtr ptrSTDCfg = Marshal.AllocHGlobal(dwSTDSize);
                        Marshal.StructureToPtr(struCfg, ptrSTDCfg, false);
                        bool m_dwReturnValue = CHCNetSDK.NET_DVR_GetSTDConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_SINGLE_CHANNELINFO, ptrSTDCfg);
                        Marshal.FreeHGlobal(ptrCoundBuffer);
                        if (m_dwReturnValue)
                        {
                            int lentemp = (int)dwXmlSize;
                            pOutBuf = Marshal.PtrToStringAnsi(m_pXmlOutBuf, lentemp);

                            //XmlDocument xd = new XmlDocument();

                            //xd.LoadXml(pOutBuf);
                            ////使用xpath表达式选择文档中所有的student子节点
                            //XmlNodeList studentNodeList = xd.SelectNodes("ChannelInfo");
                            using (XmlReader xmlReader = XmlTextReader.Create(new StringReader(pOutBuf)))
                            {
                                try
                                {
                                    string parentnode = "";
                                    while (xmlReader.Read())
                                    {
                                        switch (xmlReader.NodeType)
                                        {
                                        case XmlNodeType.Element:
                                            if (xmlReader.Name == "ChannelInfo")
                                            {
                                                parentnode = "ChannelInfo";
                                                if (xmlReader.HasAttributes)
                                                {
                                                    //if (xmlReader.MoveToAttribute("EagleEye"))
                                                    //{
                                                    //}
                                                    //if (xmlReader.MoveToAttribute("PanoramicMetaData"))
                                                    //{
                                                    //}
                                                    //if (xmlReader.MoveToAttribute("InsertChanNo"))
                                                    //{
                                                    //}
                                                }
                                            }
                                            if (xmlReader.Name == "EagleEye")
                                            {
                                                parentnode = "EagleEye";
                                            }
                                            if (xmlReader.Name == "PanoramicMetaData")
                                            {
                                                parentnode = "PanoramicMetaData";
                                            }
                                            if (xmlReader.Name == "InsertChanNo" && parentnode == "PanoramicMetaData")
                                            {
                                                parentnode = "InsertChanNo";
                                                dicChannelType.Add(m_lChannel, EnumChannelType.EagleChannel);
                                            }
                                            break;
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                }
                            }


                            //XMLBASE.Parse(pOutBuf);
                            //XMLBASE.SetRoot();
                            //string XMLStrTemp = XMLBASE.GetChildrenText();
                            //XMLStrTemp.Replace("\n", "\r\n");
                            //if (XMLBASE.FindElem("ChannelInfo") && XMLBASE.IntoElem())
                            //{
                            //    if (XMLBASE.FindElem("EagleEye") && XMLBASE.IntoElem())
                            //    {
                            //        if (XMLBASE.FindElem("PanoramicMetaData") && XMLBASE.IntoElem())
                            //        {
                            //            if (XMLBASE.FindElem("InsertChanNo"))
                            //            {
                            //                //string strChannel;
                            //                //strChannel = XMLBASE.GetAttributeValue("InsertChanNo");
                            //                dicChannelType.Add(i, EnumChannelType.EagleChannel);
                            //                //m_EagleEyeChannelStream = true;
                            //            }
                            //        }
                            //    }
                            //}
                        }
                        else
                        {
                            //m_dwLastError = CHCNetSDK.NET_DVR_GetLastError();
                        }
                        if (!dicChannelType.ContainsKey(m_lChannel))
                        {
                            dicChannelType.Add(m_lChannel, EnumChannelType.QiangJiChannel);
                        }
                        Marshal.FreeHGlobal(ptrSTDCfg);
                        Marshal.FreeHGlobal(m_pXmlOutBuf);
                    }
                }
            }
        }
예제 #23
0
        private void btnLogin_Click()
        {
            //if (m_lUserID < 0)
            //{
            //    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
            //    str1 = "摄像头未登录NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号
            //    MessageBox.Show(str1);
            //    return;
            //}
            //else
            //{
            //    //登录成功
            //    //MessageBox.Show("Login Success!");

            //    dwAChanTotalNum = (uint)DeviceInfo.byChanNum;
            //    dwDChanTotalNum = (uint)DeviceInfo.byIPChanNum + 256 * (uint)DeviceInfo.byHighDChanNum;

            //    if (dwDChanTotalNum > 0)
            //    {
            //        InfoIPChannel();
            //    }
            //    else
            //    {
            //        for (i = 0; i < dwAChanTotalNum; i++)
            //        {
            //            ListAnalogChannel(i + 1, 1);
            //            iChannelNum[i] = i + (int)DeviceInfo.byStartChan;
            //        }
            //        // MessageBox.Show("This device has no IP channel!");
            //    }
            //}
            //if (textBoxIP.Text == "" || textBoxPort.Text == "" ||
            //    textBoxUserName.Text == "" || textBoxPassword.Text == "")
            //{
            //    MessageBox.Show("Please input IP, Port, User name and Password!");
            //    return;
            //}
            if (m_lUserID < 0)
            {
                string DVRIPAddress  = ConfigurationManager.AppSettings["HKIPNVR"].ToString();                //设备IP地址或者域名
                Int16  DVRPortNumber = Int16.Parse(ConfigurationManager.AppSettings["HKPORTNVR"].ToString()); //设备服务端口号
                string DVRUserName   = ConfigurationManager.AppSettings["HKUSERNAMENVR"].ToString();          //设备登录用户名
                string DVRPassword   = ConfigurationManager.AppSettings["HKPASSWORDNVR"].ToString();          //设备登录密码



                //string DVRIPAddress =  //设备IP地址或者域名
                //Int16 DVRPortNumber = Int16.Parse(ConfigurationManager.AppSettings["HKPORT"].ToString());//设备服务端口号
                //string DVRUserName = ConfigurationManager.AppSettings["HKUSERNAME"].ToString();//设备登录用户名
                //string DVRPassword = ConfigurationManager.AppSettings["HKPASSWORD"].ToString();//设备登录密码

                //    DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();

                //登录设备 Login the device
                m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
                if (m_lUserID < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str1     = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号
                    MessageBox.Show(str1);
                    return;
                }
                else
                {
                    //登录成功
                    //MessageBox.Show("Login Success!");

                    dwAChanTotalNum = (uint)DeviceInfo.byChanNum;
                    dwDChanTotalNum = (uint)DeviceInfo.byIPChanNum + 256 * (uint)DeviceInfo.byHighDChanNum;

                    if (dwDChanTotalNum > 0)
                    {
                        InfoIPChannel();
                    }
                    else
                    {
                        for (i = 0; i < dwAChanTotalNum; i++)
                        {
                            ListAnalogChannel(i + 1, 1);
                            iChannelNum[i] = i + (int)DeviceInfo.byStartChan;
                        }
                        // MessageBox.Show("This device has no IP channel!");
                    }
                }
            }
            //else
            //{
            //    if (m_lPlayHandle >= 0)
            //    {
            //        MessageBox.Show("Please stop playback firstly"); //登出前先停止预览
            //        return;
            //    }

            //    //注销登录 Logout the device
            //    if (!CHCNetSDK.NET_DVR_Logout(m_lUserID))
            //    {
            //        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
            //        str1 = "NET_DVR_Logout failed, error code= " + iLastErr;
            //        MessageBox.Show(str1);
            //        return;
            //    }
            //    listViewIPChannel.Items.Clear();//清空通道列表
            //    m_lUserID = -1;
            //    btnLogin.Text = "Login";
            //}
            return;
        }
예제 #24
0
        private void buttonSetWP_Click(object sender, EventArgs e)
        {
            AdjustTime();
            uint dwCommand = 0;

            string[] strCommand = { "NET_DVR_SET_WEEK_PLAN_CFG", "NET_DVR_SET_VERIFY_WEEK_PLAN", "NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50" };

            uint   dwReturned = 0;
            string strTemp    = null;

            if (checkBoxEnableWP.Checked)
            {
                m_struPlanCfg.byEnable = 1;
            }
            else
            {
                m_struPlanCfg.byEnable = 0;
            }

            uint dwSize = (uint)Marshal.SizeOf(m_struPlanCfg);

            m_struPlanCfg.dwSize = dwSize;
            IntPtr ptrPlanCfg = Marshal.AllocHGlobal((int)dwSize);

            Marshal.StructureToPtr(m_struPlanCfg, ptrPlanCfg, false);


            switch (comboBoxDeviceTypeWP.SelectedIndex)
            {
            case 0:
            case 1:
                if (comboBoxDeviceTypeWP.SelectedIndex == 0)
                {
                    dwCommand = (uint)CHCNetSDK.NET_DVR_SET_WEEK_PLAN_CFG;
                }
                else
                {
                    dwCommand = (uint)CHCNetSDK.NET_DVR_SET_VERIFY_WEEK_PLAN;
                }

                int weekPlanNumberWPIndex;
                int.TryParse(textBoxWeekPlanNumberWP.Text, out weekPlanNumberWPIndex);

                if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, dwCommand, weekPlanNumberWPIndex, ptrPlanCfg, dwSize))
                {
                    Marshal.FreeHGlobal(ptrPlanCfg);
                    strTemp = string.Format("{0} FAIL, ERROR CODE {1}", strCommand[comboBoxDeviceTypeWP.SelectedIndex], CHCNetSDK.NET_DVR_GetLastError());
                    MessageBox.Show(strTemp);
                    return;
                }
                else
                {
                    strTemp = string.Format("{0}", strCommand[comboBoxDeviceTypeWP.SelectedIndex]);
                    g_formList.AddLog(m_lUserID, AcsDemoPublic.OPERATION_SUCC_T, strTemp);
                }

                break;

            case 2:
                dwCommand = (uint)CHCNetSDK.NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50;
                uint dwConSize = (uint)Marshal.SizeOf(m_struPlanCond);
                m_struPlanCond.dwSize = dwConSize;
                IntPtr ptrPlanCon = Marshal.AllocHGlobal((int)dwConSize);
                Marshal.StructureToPtr(m_struPlanCond, ptrPlanCon, false);
                IntPtr ptrDwReturned = Marshal.AllocHGlobal(4);

                // limited input data guarantee parse success
                uint.TryParse(textBoxWeekPlanNumberWP.Text, out m_struPlanCond.dwWeekPlanNumber);
                ushort.TryParse(textBoxLocalControllerIDWP.Text, out m_struPlanCond.wLocalControllerID);


                if (!CHCNetSDK.NET_DVR_SetDeviceConfig(m_lUserID, dwCommand, 1, ptrPlanCon, dwConSize, ptrDwReturned, ptrPlanCfg, dwSize))
                {
                    Marshal.FreeHGlobal(ptrPlanCfg);
                    Marshal.FreeHGlobal(ptrPlanCon);
                    Marshal.FreeHGlobal(ptrDwReturned);
                    strTemp = string.Format("{0} FAIL, ERROR CODE {1}", strCommand[comboBoxDeviceTypeWP.SelectedIndex], CHCNetSDK.NET_DVR_GetLastError());
                    MessageBox.Show(strTemp);
                    return;
                }
                else
                {
                    dwReturned = (uint)Marshal.ReadInt32(ptrDwReturned);
                    Marshal.FreeHGlobal(ptrDwReturned);
                    Marshal.FreeHGlobal(ptrPlanCon);
                    strTemp = string.Format("{0}", strCommand[comboBoxDeviceTypeWP.SelectedIndex]);
                    g_formList.AddLog(m_lUserID, AcsDemoPublic.OPERATION_SUCC_T, strTemp);
                }

                break;

            default:
                Marshal.FreeHGlobal(ptrPlanCfg);
                MessageBox.Show("unknow command");
                return;
            }
            Marshal.FreeHGlobal(ptrPlanCfg);
        }
예제 #25
0
        public bool Login(bool bStatus)//true said add node login, false for the existing node to log in
        {
            LoginCallBackFlag = false;
            m_struDeviceInfo  = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();

            CHCNetSDK.NET_DVR_DEVICEINFO_V30 struDeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
            struDeviceInfo.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN];

            CHCNetSDK.NET_DVR_NETCFG_V50 struNetCfg = new CHCNetSDK.NET_DVR_NETCFG_V50();
            struNetCfg.Init();
            CHCNetSDK.NET_DVR_DEVICECFG_V40 struDevCfg = new CHCNetSDK.NET_DVR_DEVICECFG_V40();
            struDevCfg.sDVRName      = new byte[CHCNetSDK.NAME_LEN];
            struDevCfg.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN];
            struDevCfg.byDevTypeName = new byte[CHCNetSDK.DEV_TYPE_NAME_LEN];
            CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo     = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO();
            CHCNetSDK.NET_DVR_DEVICEINFO_V40  struDeviceInfoV40 = new CHCNetSDK.NET_DVR_DEVICEINFO_V40();
            struDeviceInfoV40.struDeviceV30.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN];
            uint dwReturned = 0;
            int  lUserID    = -1;

            struLoginInfo.bUseAsynLogin = AysnLoginFlag;
            struLoginInfo.cbLoginResult = new CHCNetSDK.LoginResultCallBack(AsynLoginMsgCallback);

            if (bStatus)
            {
                struLoginInfo.sDeviceAddress = textBoxDeviceAddress.Text;
                struLoginInfo.sUserName      = textBoxUserName.Text;
                struLoginInfo.sPassword      = textBoxPassword.Text;
                ushort.TryParse(textBoxPort.Text, out struLoginInfo.wPort);
            }
            else
            {
                struLoginInfo.sDeviceAddress = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceIP;
                struLoginInfo.sUserName      = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginUserName;
                struLoginInfo.sPassword      = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginPwd;
                struLoginInfo.wPort          = (ushort)g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lDevicePort;
            }

            lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40);
            if (struLoginInfo.bUseAsynLogin)
            {
                for (int i = 0; i < 1000; i++)
                {
                    if (!LoginCallBackFlag)
                    {
                        Thread.Sleep(5);
                    }
                    else
                    {
                        break;
                    }
                }
                if (!LoginCallBackFlag)
                {
                    MessageBox.Show(Properties.Resources.asynloginTips, Properties.Resources.messageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                if (m_AysnLoginResult == 1)
                {
                    lUserID = m_iUserID;
                    struDeviceInfoV40.struDeviceV30 = m_struDeviceInfo;
                }
                else
                {
                    MessageBox.Show(Properties.Resources.asynloginFailedTips, Properties.Resources.messageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(false);
                }
            }

            if (lUserID < 0)
            {
                uint   nErr    = CHCNetSDK.NET_DVR_GetLastError();
                string strTemp = string.Format("NET_DVR_Login_V40 [{0}]", textBoxDeviceAddress.Text);
                g_formList.AddLog(-1, AcsDemoPublic.OPERATION_FAIL_T, strTemp);
                if (nErr == CHCNetSDK.NET_DVR_PASSWORD_ERROR)
                {
                    MessageBox.Show("user name or password error!");
                    if (1 == struDeviceInfoV40.bySupportLock)
                    {
                        string strTemp1 = string.Format("Left {0} try opportunity", struDeviceInfoV40.byRetryLoginTime);
                        MessageBox.Show(strTemp1);
                    }
                }
                else if (nErr == CHCNetSDK.NET_DVR_USER_LOCKED)
                {
                    if (1 == struDeviceInfoV40.bySupportLock)
                    {
                        string strTemp1 = string.Format("user is locked, the remaining lock time is {0}", struDeviceInfoV40.dwSurplusLockTime);
                        MessageBox.Show(strTemp1);
                    }
                }
                else
                {
                    MessageBox.Show("net error or dvr is busy!");
                }
                return(false);
            }
            else
            {
                if (1 == struDeviceInfoV40.byPasswordLevel)
                {
                    MessageBox.Show("default password, please change the password");
                }
                else if (3 == struDeviceInfoV40.byPasswordLevel)
                {
                    MessageBox.Show("risk password, please change the password");
                }
                struDeviceInfo = struDeviceInfoV40.struDeviceV30;
            }

            if (bStatus)
            {
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLocalNodeName = textBoxLocalNode.Text;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginPwd      = textBoxPassword.Text;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceIP      = textBoxDeviceAddress.Text;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginUserName = textBoxUserName.Text;
                int.TryParse(textBoxPort.Text, out g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lDevicePort);
            }

            g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_Login_V40");

            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byCharaterEncodeType    = struDeviceInfoV40.byCharEncodeType;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lLoginID                = lUserID;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chSerialNumber          = System.Text.Encoding.UTF8.GetString(struDeviceInfo.sSerialNumber).TrimEnd('\0');
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceIndex            = m_iDeviceIndex;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType             = (int)struDeviceInfo.wDevType;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum          = (int)(struDeviceInfo.byChanNum + struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256);
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iStartChan              = (int)struDeviceInfo.byStartChan;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDiskNum                = (int)struDeviceInfo.byDiskNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAlarmInNum             = (int)struDeviceInfo.byAlarmInPortNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAlarmOutNum            = (int)struDeviceInfo.byAlarmOutPortNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAudioNum               = (int)struDeviceInfo.byAlarmOutPortNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAnalogChanNum          = (int)struDeviceInfo.byChanNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum              = (int)(struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256);
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byZeroChanNum           = struDeviceInfo.byZeroChanNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byStartDTalkChan        = struDeviceInfo.byStartDTalkChan;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byLanguageType          = struDeviceInfo.byLanguageType;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum         = struDeviceInfo.byMirrorChanNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo      = struDeviceInfo.wStartMirrorChanNo;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byAudioInputChanNum     = struDeviceInfo.byVoiceInChanNum;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byStartAudioInputChanNo = struDeviceInfo.byStartVoiceInChanNo;

            if (1 == (struDeviceInfo.bySupport & 0x80))
            {
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMainProto = (byte)(struDeviceInfo.byMainProto + 2);
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySubProto  = (byte)(struDeviceInfo.bySubProto + 2);
            }
            else
            {
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMainProto = struDeviceInfo.byMainProto;
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySubProto  = struDeviceInfo.bySubProto;
            }

            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport1     = struDeviceInfo.bySupport1;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport2     = struDeviceInfo.bySupport2;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport7     = struDeviceInfo.bySupport7;
            g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byLanguageType = struDeviceInfo.byLanguageType;

            uint   dwSize    = (uint)Marshal.SizeOf(struNetCfg);
            IntPtr ptrNetCfg = Marshal.AllocHGlobal((int)dwSize);

            Marshal.StructureToPtr(struNetCfg, ptrNetCfg, false);

            if (!CHCNetSDK.NET_DVR_GetDVRConfig(lUserID, CHCNetSDK.NET_DVR_GET_NETCFG_V50, 0, ptrNetCfg, dwSize, ref dwReturned))
            {
                g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_NETCFG_V50");
            }
            else
            {
                //IPv6 temporary unrealized
                struNetCfg = (CHCNetSDK.NET_DVR_NETCFG_V50)Marshal.PtrToStructure(ptrNetCfg, typeof(CHCNetSDK.NET_DVR_NETCFG_V50));
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceMultiIP = struNetCfg.struMulticastIpAddr.sIpV4;
                string strTemp = string.Format("multi-cast ipv4 {0}", struNetCfg.struMulticastIpAddr.sIpV4);
                g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, strTemp);
            }
            Marshal.FreeHGlobal(ptrNetCfg);

            dwReturned = 0;
            uint   dwSize2   = (uint)Marshal.SizeOf(struDevCfg);
            IntPtr ptrDevCfg = Marshal.AllocHGlobal((int)dwSize2);

            Marshal.StructureToPtr(struDevCfg, ptrDevCfg, false);

            if (!CHCNetSDK.NET_DVR_GetDVRConfig(lUserID, CHCNetSDK.NET_DVR_GET_DEVICECFG_V40, 0, ptrDevCfg, dwSize2, ref dwReturned))
            {
                g_formList.AddLog(lUserID, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_DEVICECFG_V40");
            }
            else
            {
                struDevCfg = (CHCNetSDK.NET_DVR_DEVICECFG_V40)Marshal.PtrToStructure(ptrDevCfg, typeof(CHCNetSDK.NET_DVR_DEVICECFG_V40));
                if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType != (int)struDevCfg.wDevType)
                {
                    // string strTemp = null;
                    string strShow = null;
                    // g_formList.g_StringLanType(ref strTemp, "登陆返回设备类型值与获取设备参数返回设备类型值不同", "returned device type is different between login and get device config");
                    strShow = "returned device type is different between login and get device config" + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType.ToString() + " " + struDevCfg.wDevType.ToString();
                    MessageBox.Show(strShow);
                }
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceName = System.Text.Encoding.UTF8.GetString(struDevCfg.byDevTypeName).Trim('\0');
                g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].dwDevSoftVer = struDevCfg.dwSoftwareVersion;
            }
            Marshal.FreeHGlobal(ptrDevCfg);

            if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum >= 0)
            {
                if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum == 0)
                {
                    g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[1];
                }
                else
                {
                    if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum % CHCNetSDK.MAX_CHANNUM_V30 == 0)
                    {
                        g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 =
                            new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30];
                    }
                    else
                    {
                        g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 =
                            new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30 + 1];
                    }
                }
            }

            //if (DoGetDeviceResoureCfg(m_iDeviceIndex))
            //{

            //}

            return(true);
        }
예제 #26
0
        public static bool BruteCam(string ip, int port, string login, string password)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Trying " + login + ":" + password + " for " + ip + ":" + port);
            Console.ResetColor();
            if (!DahuaMode)
            {
                CHCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
                int uid = CHCNetSDK.NET_DVR_Login_V30(ip, port, login, password, ref deviceInfo);
                if (uid != -1)
                {
                    var sn = Encoding.UTF8.GetString(deviceInfo.sSerialNumber).Replace("\0", "");

                    string features = "";

                    bool audio = IsAudio(sn);
                    bool ptz   = IsPtz(sn);

                    if (audio)
                    {
                        features = "Audio";
                    }
                    if (ptz)
                    {
                        features = "PTZ";
                    }
                    if (!audio && !ptz)
                    {
                        features = "not found";
                    }

                    Console.ForegroundColor = ConsoleColor.Green;
                    var channels = deviceInfo.byChanNum;
                    Console.WriteLine("Logged in: " + login + ":" + password + "@" + ip + ":" + port + ", channels: " + channels + ", features: " + features + ", SerialNumber: " + sn);
                    Console.ResetColor();
                    if (!FastMode)
                    {
                        if (!audio && !ptz)
                        {
                            AppendAllText(OutputFile, "Normal camera: " + login + ":" + password + "@" + ip + ":" + port + "; channels: " + channels + "; SerialNumber:" + sn + "\n");
                        }
                        if (audio)
                        {
                            AppendAllText(OutputFile, "Audio camera:  " + login + ":" + password + "@" + ip + ":" + port + "; channels: " + channels + "; SerialNumber:" + sn + "\n");
                        }
                        if (ptz)
                        {
                            AppendAllText(OutputFile, "PTZ camera:    " + login + ":" + password + "@" + ip + ":" + port + "; channels: " + channels + "; SerialNumber: " + sn + "\n");
                        }
                        for (int channel = deviceInfo.byStartChan; channel < deviceInfo.byChanNum + deviceInfo.byStartChan; channel++)
                        {
                            string filename = PicturesDir + "/" + login + "_" + password + "_" + ip + "_" + port + "_" + channel + ".jpg";
                            CHCNetSDK.NET_DVR_JPEGPARA netDvrJpegpara = new CHCNetSDK.NET_DVR_JPEGPARA
                            {
                                wPicQuality = 0,
                                wPicSize    = 2
                            };
                            if (CHCNetSDK.NET_DVR_CaptureJPEGPicture(uid, channel, ref netDvrJpegpara, filename))
                            {
                                Image image = Image.FromFile(filename);
                                Console.ForegroundColor = ConsoleColor.Cyan;
                                Console.WriteLine("Downloaded picture (channel " + channel + ", size " + image.Width + "x" + image.Height + ") from the camera " + ip + ":" + port);
                                Console.ResetColor();
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("Could not download picture from " + ip + ":" + port + " (channel " + channel + ")");
                                Console.ResetColor();
                            }
                        }
                    }
                    CHCNetSDK.NET_DVR_Logout_V30(uid);
                    return(true);
                }
            }
            else
            {
                Dahua.CLIENT_Init(ip);
                if (Dahua.CLIENT_Login(ip, port, login, password) != 0)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Logged in: " + login + ":" + password + "@" + ip + ":" + port);
                    Console.ResetColor();
                    AppendAllText(OutputFile, "Dahua camera:  " + login + ":" + password + "@" + ip + ":" + port + "\n");
                    return(true);
                }
            }
            return(false);
        }
예제 #27
0
 private void Close()
 {
     CHCNetSDK.CLIENT_SDK_StopStream(m_lRealHandle);
 }
예제 #28
0
        private void ProcessInfoSynCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData)
        {
            if (pUserData == null)
            {
                return;
            }

            if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS)
            {
                uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer);
                if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 1, 0);
                    //可以结束了,异常结束
                }
                else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_EXCEPTION)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 2, 0);
                    //可以结束了,异常结束
                }
                else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_PROCESSING)
                {
                    ;
                }
                else
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 3, 0);
                    //可以结束了,异常结束
                }
            }
            else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA)
            {
                //输出上一包解析信息, 1003
                string strResponseStatus = Marshal.PtrToStringAnsi(lpBuffer);
                IntPtr response          = IntPtr.Zero;

                if (m_bFirst)
                {
                    m_bFirst = false;
                    CResponseStatus JsonResponseStatus = new CResponseStatus();
                    JsonResponseStatus = JsonConvert.DeserializeObject <CResponseStatus>(strResponseStatus);
                    response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                }
                else
                {
                    if (m_command == SynInfoCommand.USER_INFO_SYN)
                    {
                        CUserInfoSyn JsonResponseStatus = new CUserInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CUserInfoSyn>(strResponseStatus);
                        m_iCurProgress     = JsonResponseStatus.UserInfoSync.progressValue;
                        response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                    }
                    else
                    {
                        CCardInfoSyn JsonResponseStatus = new CCardInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus);
                        m_iCurProgress     = JsonResponseStatus.CardInfoSync.progressValue;
                        response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                    }
                }

                CHCNetSDK.PostMessage(pUserData, 1003, (int)response, 0);

                if (m_iCurProgress >= 100)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 4, 0);
                    //可以结束了,正常(异常)结束
                    return;
                }
                CHCNetSDK.PostMessage(pUserData, 1002, 0, 0);
                //在主线程中发送下一个用户
            }
            return;
        }
예제 #29
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);
        }
예제 #30
0
        private void MotionDetect_Load(object sender, EventArgs e)
        {
            string str = "";
            byte   byCount;

            for (byCount = 1; byCount <= m_struDeviceInfo.byChanNum; byCount++)
            {
                str = String.Format("Camera {0}", byCount);
                treeViewRecordChan.Nodes.Add(str);
            }

            for (byCount = 1; byCount <= m_struDeviceInfo.byIPChanNum; byCount++)
            {
                str = String.Format("IPCamera {0}", byCount);
                treeViewRecordChan.Nodes.Add(str);
            }

            for (byCount = 1; byCount <= m_struDeviceInfo.byAlarmOutPortNum; byCount++)
            {
                str = String.Format("Alarm Out {0}", byCount);
                treeViewAlarmOut.Nodes.Add(str);
            }

            CHCNetSDK.NET_DVR_CLIENTINFO struClientInfo;
            struClientInfo.lChannel     = 1; // channel can  be change
            struClientInfo.lLinkMode    = 0;
            struClientInfo.hPlayWnd     = MotionRealPlay.Handle;
            struClientInfo.sMultiCastIP = "";

            m_lMotionPlayHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref struClientInfo, null, IntPtr.Zero, 1);

            if (m_lMotionPlayHandle < 0)
            {
                Debug.Print("NET_DVR_RealPlay_V30 faile");
            }
            else
            {
                m_fMotionDraw = new CHCNetSDK.DRAWFUN(MotionDrawCallBack);

                CHCNetSDK.NET_DVR_RigisterDrawFun(m_lMotionPlayHandle, m_fMotionDraw, 0);
            }
            uint   dwSize       = (uint)Marshal.SizeOf(m_struPicCfgV30);
            IntPtr ptrPicCfgV30 = Marshal.AllocHGlobal((Int32)dwSize);

            Marshal.StructureToPtr(m_struPicCfgV30, ptrPicCfgV30, false);
            uint dwReturn = 0;

            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V30, m_lChannel, ptrPicCfgV30, dwSize, ref dwReturn))
            {
                // fail
                // Preview.DebugInfo("NET_DVR_GET_PICCFG_V30 Succ");
                Debug.Print("NET_DVR_GET_PICCFG_V30 fail");
                MessageBox.Show("NET_DVR_GET_PICCFG_V30 Fail");
            }
            else
            {
                // succ
                Debug.Print("NET_DVR_GET_PICCFG_V30 Succ");
                m_struPicCfgV30 = (CHCNetSDK.NET_DVR_PICCFG_V30)Marshal.PtrToStructure(ptrPicCfgV30, typeof(CHCNetSDK.NET_DVR_PICCFG_V30));
                m_struMotionV30 = m_struPicCfgV30.struMotion;
            }
            Marshal.FreeHGlobal(ptrPicCfgV30);

            SetMotionSensitivityCurSel(m_struMotionV30.byMotionSensitive);
            SetAlarmHandleWnd();
            comboBoxWeekday.SelectedIndex     = 0;
            comboBoxWeekdayCopy.SelectedIndex = 0;
            SetAlarmTimeWnd();
            SetRecordChanWnd();
            if (m_struMotionV30.byEnableHandleMotion == 0)
            {
                checkBoxEnableMotion.Checked = false;
            }
            else
            {
                checkBoxEnableMotion.Checked = true;
            }
        }