/// <summary>
        /// 初始化函数
        /// </summary>
        /// <param name="strServerIP">视频IP</param>
        /// <param name="iChannel">通道号</param>
        /// <param name="strUserName">用户名</param>
        /// <param name="strPsw">密码</param>
        /// <param name="strPath">抓图存储路径 如:\\LoadWeightPic\\FrontImage.jpg</param>
        public void Initialize(string strServerIP, int iChannel, string strUserName, string strPsw, string strPath)
        {
            try
            {
                if (IsLogin)
                {
                    disConnect = new fDisConnect(DisConnectEvent);
                    DHClient.DHInit(disConnect, IntPtr.Zero);
                    DHClient.DHSetEncoding(LANGUAGE_ENCODING.gb2312);

                    deviceInfo = new NET_DEVICEINFO();
                    int iLoginError = 0;
                    iLogin  = DHClient.DHLogin(strServerIP, ushort.Parse("37777"), strUserName, strPsw, out deviceInfo, out iLoginError);
                    IsLogin = false;
                }

                _strPath     = strPath;
                _strServerIP = strServerIP;
                _iChannel    = iChannel;
                iRealPlay    = DHClient.DHRealPlay(iLogin, _iChannel, this.Pic.Handle);
            }
            catch (Exception ex)
            {
                Log.WriteLog("大华视频显示控件-初始化:", ex);
            }
        }
        public override void Play(bool isAsync)
        {
            lock (_StatusLock)
            {
                if (this._Status != VideoStatus.Playing)
                {
                    if (VideoSource == null)
                    {
                        return;
                    }
                    if (!this.TitlePanel.InvokeRequired) //显示视频头
                    {
                        this.Caption            = VideoSource.VideoName;
                        this.TitlePanel.Visible = ShowTitle;
                    }

                    //初始化设备
                    if (Init() == false)
                    {
                        return;
                    }

                    //启动监视
                    m_realPlayH = DHClient.DHRealPlay(m_nLoginID, VideoSource.Channel, this.video.Handle);
                    if (m_realPlayH == 0)
                    {
                        return;
                    }

                    this._Status = VideoStatus.Playing;
                }
            }
        }
        //将视频放大和缩小并在窗体上居中显示
        private void Pic_Click(object sender, EventArgs e)
        {
            Control form = GetParent(this);

            if (!bolAmplified)
            {
                this.Width  = this.Width * _iAmplify;
                this.Height = this.Height * _iAmplify;
                iRelativeT  = this.Top;
                iRelativeL  = this.Left;
                parent      = this.Parent;
                parent.Controls.Remove(this);

                form.Controls.Add(this);
                //放大后图片居中
                this.Left = (Parent.ClientSize.Width - this.Width) / 2;
                this.Top  = (Parent.ClientSize.Height - this.Height) / 2;
            }
            else
            {
                form.Controls.Remove(this);
                parent.Controls.Add(this);
                this.Width  = this.Width / _iAmplify;
                this.Height = this.Height / _iAmplify;
                //再次点击回到原处
                this.Left = iRelativeL;
                this.Top  = iRelativeT;
            }
            this.BringToFront();
            bolAmplified = !bolAmplified;
            iRealPlay    = DHClient.DHRealPlay(iLogin, _iChannel, this.Pic.Handle);
        }
 private void RealPlay(CarPlateDevice device)
 {
     if (device != null && device.m_nLoginID != 0)
     {
         //启动监视
         device.m_realPlayH = DHClient.DHRealPlay(device.m_nLoginID, device.VideoID, this.pictureBoxImg.Handle);
     }
 }
        private void play(int canal)
        {
            bool canStop = DHClient.DHStopRealPlay(pRealPlayHandle[this.channel]);

            picPlayMain.Refresh();
            pRealPlayHandle[canal] = DHClient.DHRealPlay(pLoginID, canal, picPlayMain.Handle);
            this.channel           = canal;
        }
        public bool Init(CameraData _cameraData)
        {
            cameraData = _cameraData;
            server.start(Convert.ToInt32(cameraData.Code));
            disConnect = new fDisConnect(DisConnectEvent);
            DHClient.DHInit(disConnect, IntPtr.Zero);
            DHClient.DHSetEncoding((int)LANGUAGE_ENCODING.gb2312);//字符编码格式设置,默认为gb2312字符编码,如果为其他字符编码请设置
            pLoginID = DHClient.DHLogin(cameraData.IP, (ushort)cameraData.Port, cameraData.UserName, cameraData.Pwd, out deviceInfo, out error);
            // cameraData.control.Text = pLoginID + "";
            if (pLoginID != 0)
            {
                // (cameraData.control as UserControl).Text = pLoginID.ToString();
                pPlayBackHandle = new int[deviceInfo.byChanNum];
                //画面按钮有效性控制
                pRealPlayHandle = null;
                //for (int i = 0; i < deviceInfo.byChanNum; i++)
                //{
                //    cmbChannelSelect.Items.Add(i.ToString());
                //    //cmbChannelSelect.Items.Add((i+1).ToString());
                //}
                NET_SDK_CLIENTINFO lsc = new NET_SDK_CLIENTINFO();

                lsc.lChannel   = deviceInfo.byChanNum;                                   //预览的通道
                lsc.streamType = 1;                                                      // 码流
                lsc.hPlayWnd   = cameraData.Handle;                                      //pictureBox.Handle
                lLiveHandle    = (IntPtr)DHClient.DHRealPlay(pLoginID, 0, lsc.hPlayWnd); //ID 通道 ,Picture句柄

                IntPtr userdata = (IntPtr)Convert.ToInt32(_cameraData.Code);


                DHClient.DHSetRealDataCallBack((int)lLiveHandle, fd, userdata);
                //  DHPlay.PLAY_OpenStream(tongdao, IntPtr.Zero, 0, (UInt32)900 * 1024);
                //播放的部分
                //bool b2 = DHPlay.DHPlayControl(PLAY_COMMAND.OpenStream, tongdao, IntPtr.Zero, 0, 900 * 1024);
                //DHPlay.DHSetStreamOpenMode(tongdao, PLAY_MODE.STREAME_FILE);
                //DHPlay.DHPlayControl(0, tongdao, _cameraData.control.Handle);
                return(true);
            }
            else
            {
                return(false);
            }
        }
        private void RealPlay(bool a, int b)
        {
            if (a)
            {
                switch (b)
                {
                case 0:    //通道0的实时监视
                    pRealPlayHandle      = DHClient.DHRealPlay(pLoginID, 0, picRealPlay1.Handle);
                    picRealPlay1.Visible = true;
                    break;

                case 1:    //通道1的实时监视
                    pRealPlayHandle      = DHClient.DHRealPlay(pLoginID, 1, picRealPlay2.Handle);
                    picRealPlay2.Visible = true;
                    break;

                case 2:    //通道2的实时监视
                    pRealPlayHandle      = DHClient.DHRealPlay(pLoginID, 2, picRealPlay3.Handle);
                    picRealPlay3.Visible = true;
                    break;

                case 3:    //通道3的实时监视
                    pRealPlayHandle      = DHClient.DHRealPlay(pLoginID, 3, picRealPlay4.Handle);
                    picRealPlay4.Visible = true;
                    break;

                case 4:    //通道4的实时监视
                    pRealPlayHandle      = DHClient.DHRealPlay(pLoginID, 4, picRealPlay5.Handle);
                    picRealPlay5.Visible = true;
                    break;
                }
            }
            else
            {
                DHClient.DHStopRealPlay(pRealPlayHandle);
                picRealPlay1.Refresh();
            }
        }
 /// <summary>
 /// 设备2实时监视处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnRealPlay2_Click(object sender, EventArgs e)
 {
     //实时监控开始:注意realPlayHandle2和pLoginID1
     realPlayHandle2 = DHClient.DHRealPlay(pLoginID2, 1, picRealPlay2.Handle);
 }
 /// <summary>
 /// 设备1实时播放处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnRealPlay1_Click(object sender, EventArgs e)
 {
     //实时监控开始:注意realPlayHandle1和pLoginID1
     realPlayHandle1 = DHClient.DHRealPlay(pLoginID1, 0, picRealPlay1.Handle);
 }
Exemple #10
0
        //摄像头视频显示
        private void RealPlay()
        {
            try
            {
                disConnect = new fDisConnect(DisConnectEvent);
                DHClient.DHInit(disConnect, IntPtr.Zero);
                DHClient.DHSetEncoding(LANGUAGE_ENCODING.gb2312);//字符编码格式设置,默认为gb2312字符编码,如果为其他字符编码请设置
                pRealPlayHandle = null;
                deviceInfo      = new NET_DEVICEINFO();
                int error = 0;
                pLoginID = DHClient.DHLogin(Program.g_localVedioIp, ushort.Parse(Program.g_localVedioPort), Program.g_localVadioUsername, Program.g_localVadioPassword, out deviceInfo, out error);
                if (pLoginID != 0)
                {
                    pPlayBackHandle = new int[deviceInfo.byChanNum];
                    //画面按钮有效性控制
                    pRealPlayHandle = null;
                    pRealPlayHandle = new int[deviceInfo.byChanNum];

                    for (int i = 0; i < deviceInfo.byChanNum; i++)
                    {
                        switch (i)
                        {
                        case 0:    //通道0的实时监视
                            pictureBox17.Invoke((MethodInvoker) delegate
                            {
                                pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox17.Handle);
                            });
                            break;

                        case 1:    //通道1的实时监视
                            pictureBox18.Invoke((MethodInvoker) delegate
                            {
                                pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox18.Handle);
                            });
                            break;

                        case 2:    //通道2的实时监视
                            pictureBox19.Invoke((MethodInvoker) delegate
                            {
                                pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox19.Handle);
                            });
                            break;

                        case 3:    //通道3的实时监视
                            pictureBox20.Invoke((MethodInvoker) delegate
                            {
                                pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox20.Handle);
                            });
                            break;

                        case 4:    //通道4的实时监视
                            pictureBox21.Invoke((MethodInvoker) delegate
                            {
                                pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox21.Handle);
                            });
                            break;
                        }
                    }
                }
            }
            catch (Exception vedioError)
            {
                Program.WriteLog("调用摄像头异常:" + vedioError.ToString());
            }
        }
Exemple #11
0
        /// <summary>
        /// 实时播放按钮按下
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRealPlay_Click(object sender, EventArgs e)
        {
            string strStart = StringUtil.ConvertString("实时监视开始");
            string strStop  = StringUtil.ConvertString("实时监视结束");

            if (btnRealPlay.Text.Equals(strStart))
            {
                btnRealPlay.Text = strStop;
                pRealPlayHandle  = new int[deviceInfo.byChanNum];
                cmbChannelSelect.Items.Clear();
                for (int i = 0; i < deviceInfo.byChanNum; i++)
                {
                    cmbChannelSelect.Items.Add(i.ToString());
                }
                cmbChannelSelect.SelectedIndex = 0;

                for (int i = 0; i < deviceInfo.byChanNum; i++)
                {
                    switch (i)
                    {
                    case 0:    //通道0的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay0.Handle);
                        break;

                    case 1:    //通道1的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay1.Handle);
                        break;

                    case 2:    //通道2的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay2.Handle);
                        break;

                    case 3:    //通道3的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay3.Handle);
                        break;

                    case 4:    //通道4的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay4.Handle);
                        break;

                    case 5:    //通道5的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay5.Handle);
                        break;

                    case 6:    //通道6的实时监视
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay6.Handle);
                        break;

                    case 7:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay7.Handle);
                        break;

                    case 8:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay8.Handle);
                        break;

                    case 9:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay9.Handle);
                        break;

                    case 10:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay10.Handle);
                        break;

                    case 11:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay11.Handle);
                        break;

                    case 12:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay12.Handle);
                        break;

                    case 13:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay13.Handle);
                        break;

                    case 14:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay14.Handle);
                        break;

                    case 15:
                        pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay15.Handle);
                        break;
                    }
                }
                gpbPTZControl.Enabled = true;
            }
            else
            {
                btnRealPlay.Text = strStart;
                cmbChannelSelect.Items.Clear();
                for (int i = 0; i < deviceInfo.byChanNum; i++)
                {
                    DHClient.DHStopRealPlay(pRealPlayHandle[i]);
                }
                picRealPlay0.Refresh();
                picRealPlay1.Refresh();
                picRealPlay2.Refresh();
                picRealPlay3.Refresh();
                picRealPlay4.Refresh();
                picRealPlay5.Refresh();
                picRealPlay6.Refresh();
                picRealPlay7.Refresh();
                picRealPlay8.Refresh();
                picRealPlay9.Refresh();
                picRealPlay10.Refresh();
                picRealPlay11.Refresh();
                picRealPlay12.Refresh();
                picRealPlay13.Refresh();
                picRealPlay14.Refresh();
                picRealPlay15.Refresh();
                gpbPTZControl.Enabled = false;
            }
        }