// 抓图点击时 开始抓图
        private void cmsZT_Click(object sender, EventArgs e)
        {
            PictureBox pic   = (PictureBox)(cms.SourceControl);
            int        index = int.Parse(pic.Name);

            if (m_lRealHandle[index] >= 0)  // 抓图
            {
                string path = ClassXml.getSetXml("capture");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //图片名称 年月日 时分秒
                string sBmpPicFileName = System.DateTime.Now.ToString("yyMMddhhmmss");
                sBmpPicFileName = path + "\\" + sBmpPicFileName + ".bmp";
                //BMP抓图 Capture a BMP picture
                if (!CHCNetSDK.NET_DVR_CapturePicture(m_lRealHandle[index], sBmpPicFileName))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    toolStripStatusLabel6.Text = "抓图失败,错误代码" + iLastErr.ToString();
                }
                else
                {
                    toolStripStatusLabel6.Text = "抓图成功,保存文件名为" + sBmpPicFileName;
                }
            }
        }
        private FormRecord[] recordFrm = new FormRecord[9];  //9 个录像界面
        // 录像点击时 开始录像
        private void cmsLX_Click(object sender, EventArgs e)
        {
            PictureBox pic   = (PictureBox)(cms.SourceControl);
            int        index = int.Parse(pic.Name);

            if (index == 0)
            {
                threadRunning = false;      // 线程空运行  只对第一个通道做处理
            }
            if (m_lRealHandle[index] >= 0)  // 如果在预览
            {
                string path = ClassXml.getSetXml("record");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //图片名称 年月日 时分秒
                string FileName = System.DateTime.Now.ToString("yyMMddhhmmss");
                FileName = path + "\\" + FileName + ".mp4";

                //mp4录像
                if (m_bRecord[index] == false)    //开始录像
                {
                    //强制I帧 Make one key frame
                    int lChannel = iChannelNum[index]; //通道号 Channel number
                    CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);

                    //开始录像 Start recording
                    if (!CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle[index], FileName))
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        toolStripStatusLabel6.Text = "录像失败,错误代码" + iLastErr.ToString();
                        return;
                    }
                    else
                    {
                        toolStripStatusLabel6.Text = "开始录像,保存文件名为" + FileName;
                        m_bRecord[index]           = true;
                        recordFrm[index]           = new FormRecord();
                        recordFrm[index].index     = index;
                        recordFrm[index].Owner     = this;
                        recordFrm[index].path      = FileName;
                        recordFrm[index].Show();  // 显示录像界面
                    }
                }
                else  //打开录像界面
                {
                    if (recordFrm[index] != null)
                    {
                        recordFrm[index].WindowState = FormWindowState.Normal;
                    }
                    //停止录像 Stop recording

                    /*CHCNetSDK.NET_DVR_StopSaveRealData(m_lRealHandle[index]);
                     * m_bRecord[index] = false;   */
                }
            }
        }
        // 开始录像
        private void startRecord()
        {
            threadRunning = false; // 线程空运行
            if (soundonoff)        // 如果发出警报
            {
                Beep(600, 1000);   // 发出警告声音
            }
            // 开始录像
            if (m_lRealHandle[0] >= 0)  // 如果在预览
            {
                string path = ClassXml.getSetXml("record");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //图片名称 年月日 时分秒
                string FileName = System.DateTime.Now.ToString("yyMMddhhmmss");
                FileName = path + "\\" + FileName + ".mp4";

                //mp4录像
                if (m_bRecord[0] == false)    //开始录像
                {
                    //强制I帧 Make one key frame
                    int lChannel = iChannelNum[0]; //通道号 Channel number
                    CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);

                    //开始录像 Start recording
                    if (!CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle[0], FileName))
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        toolStripStatusLabel6.Text = "录像失败,错误代码" + iLastErr.ToString();
                        return;
                    }
                    else
                    {
                        toolStripStatusLabel6.Text = "开始录像,保存文件名为" + FileName;
                        m_bRecord[0]       = true;
                        recordFrm[0]       = new FormRecord();
                        recordFrm[0].index = 0;
                        recordFrm[0].Owner = this;
                        recordFrm[0].path  = FileName;
                        recordFrm[0].Show();  // 显示录像界面
                    }
                }
                else  //打开录像界面
                {
                    if (recordFrm[0] != null)
                    {
                        recordFrm[0].WindowState = FormWindowState.Normal;
                    }
                }
            }
        }
 //刷新设备列表
 private void devicelistREfresh()
 {
     closeDevice();
     if (panelDeviceMana.Visible)  // 设备管理
     {
         listView1.Items.Clear();
         string          DVRIPAddress;  //设备IP地址或者域名 Device IP
         Int16           DVRPortNumber; //设备服务端口号 Device Port
         string          DVRUserName;   //设备登录用户名 User name to login
         string          DVRPassword;   //设备登录密码 Password to login
         Int32           m_lUserID;
         string          status = "", xuliehao = "";
         string[]        s;
         List <string[]> list = ClassXml.readXml();
         for (int i = 0; i < list.Count; ++i)
         {
             s = list[i];
             if (s.Length > 0)
             {
                 DVRIPAddress  = s[1];              //设备IP地址或者域名 Device IP
                 DVRPortNumber = Int16.Parse(s[2]); //设备服务端口号 Device Port
                 DVRUserName   = s[3];              //设备登录用户名 User name to login
                 DVRPassword   = s[4];              //设备登录密码 Password to login
                 //登录设备 Login the device
                 m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
                 if (m_lUserID < 0)
                 {
                     status   = "连接无效";
                     xuliehao = "";
                 }
                 else
                 {
                     status   = "连接有效";
                     xuliehao = System.Text.Encoding.Default.GetString(DeviceInfo.sSerialNumber);
                     CHCNetSDK.NET_DVR_Logout(m_lUserID);  // 关闭连接
                 }
                 ListViewItem lvi = new ListViewItem(s[0]);
                 lvi.SubItems.Add(s[1]);
                 lvi.SubItems.Add(xuliehao);
                 lvi.SubItems.Add(status);
                 listView1.Items.Add(lvi);
             }
         }
     }
     else if (panelLiveView.Visible)
     {
         motiondetectonoff = false; soundonoff = false;
         if (ClassXml.getSetXml("motiondetect") == "是")
         {
             motiondetectonoff = true;
         }
         if (ClassXml.getSetXml("sound") == "是")
         {
             soundonoff = true;
         }
         treeView2.Nodes.Clear();
         string[]        s;
         List <string[]> list = ClassXml.readXml();
         for (int i = 0; i < list.Count; ++i)
         {
             s = list[i];
             if (s.Length > 0)
             {
                 treeView2.Nodes.Add("监控点" + (i + 1).ToString() + "_" + s[0]);
             }
         }
         if (treeView2.Nodes.Count > 0) // 启动第一个设备
         {
             treeView2.SelectedNode = treeView2.Nodes[0];
         }
     }
 }