示例#1
0
 public string devicename, ip;  //设备名
 private void FormDeviceAdd_Load(object sender, EventArgs e)
 {
     if (devicename == "")  //添加设备
     {
         this.Text = "添加设备";
     }
     else
     {
              //修改设备
         this.Text = "修改设备";
         string [] s = ClassXml.getDeviceXml(devicename);
         if (s == null)
         {
             MessageBox.Show("故障!请重新操作!");
             this.Close();
         }
         else
         {
             textBoxName.Text = s[0];
             textBoxIP.Text   = s[1];
             ip = s[1];
             textBoxPort.Text     = s[2];
             textBoxUserName.Text = s[3];
             textBoxPassword.Text = s[4];
             textBoxName.ReadOnly = true;
         }
     }
 }
        //选择设备时 打开所有可用通道进行预览  其实这里限制 只预览9个通道
        private void treeView2_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (treeView2.SelectedNode == null)
            {
                return;
            }
            toolStripStatusLabel4.Text = "监控:" + treeView2.SelectedNode.Text;
            string name = treeView2.SelectedNode.Text.Substring(treeView2.SelectedNode.Text.IndexOf('_') + 1);

            string[] s = ClassXml.getDeviceXml(name); // 获得监控设备的配置信息
            closeDevice();                            //关闭设备
            string DVRIPAddress  = s[1];              //设备IP地址或者域名 Device IP
            Int16  DVRPortNumber = Int16.Parse(s[2]); //设备服务端口号 Device Port
            string DVRUserName   = s[3];              //设备登录用户名 User name to login
            string DVRPassword   = s[4];              //设备登录密码 Password to login

            m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
            if (m_lUserID < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                toolStripStatusLabel6.Text = "登录连接失败,错误代码" + iLastErr.ToString();
            }
            else
            {
                //登录成功
                toolStripStatusLabel6.Text = "登录连接成功";
                dwAChanTotalNum            = (uint)DeviceInfo.byChanNum;                                           // 模拟通道
                dwDChanTotalNum            = (uint)DeviceInfo.byIPChanNum + 256 * (uint)DeviceInfo.byHighDChanNum; // 数字通道
                // 初始化通道
                for (int i = 0; i < 64; i++)
                {
                    iChannelNum[i] = -1;
                }
                if (dwDChanTotalNum > 0)  //数字通道不作处理 没设备呀
                {
                    //InfoIPChannel();
                }
                else
                {
                    for (int i = 0; i < dwAChanTotalNum; i++)
                    {
                        iChannelNum[i] = i + (int)DeviceInfo.byStartChan;
                    }
                    //下面开始预览
                    {
                        for (int i = 0; i < 9; ++i)  // 只能9个
                        {
                            if (box[i].Visible && iChannelNum[i] != -1)
                            {
                                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                                lpPreviewInfo.hPlayWnd        = box[i].Handle;  //预览窗口 live view window
                                lpPreviewInfo.lChannel        = iChannelNum[i]; //预览的设备通道 the device channel number
                                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 = 15;             //播放库显示缓冲区最大帧数
                                IntPtr pUser = IntPtr.Zero;                     //用户数据 user data
                                m_lRealHandle[i] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                                if (m_lRealHandle[i] < 0)
                                {
                                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                                    toolStripStatusLabel6.Text = "预览失败,错误代码" + iLastErr.ToString();
                                    return;
                                }
                                else
                                {
                                    //预览成功
                                    toolStripStatusLabel6.Text = "正在预览...";
                                }
                            }
                        }
                    }
                }
            }
        }