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 = "正在预览..."; } } } } } } }