示例#1
0
        public int openGpsDialog(Pu pu, int channelNo)
        {
            foreach (OneDialog dlg in m_gpsDialogs)
            {
                if (dlg.pu.id.Equals(pu.id, StringComparison.CurrentCultureIgnoreCase) &&
                    dlg.channelNo == channelNo)
                {
                    LogHelper.LogHelper.RecordLog(51, string.Format("已经发送打开[{0}, {1}]Gps通道的命令", pu.puName, channelNo));
                    return(-1);
                }
            }
            IntPtr dialog = IntPtr.Zero;
            int    ret    = BVCU.ManagedLayer_CuOpenGpsDialog(m_bvsdkHandle, ref dialog, m_session.Handle, Encoding.UTF8.GetBytes(pu.id), channelNo, m_bvsdkEventHandler.gpsDialog_OnEvent, m_bvsdkEventHandler.gpsDialog_OnData);

            if (BVCU.BVCU_RESULT_S_OK == ret)
            {
                OneDialog dlg = new OneDialog();
                dlg.dialogHandle = dialog;
                dlg.channelNo    = channelNo;
                dlg.pu           = pu;
                m_gpsDialogs.Add(dlg);

                LogHelper.LogHelper.RecordLog(3, string.Format("正在打开{0}, {1}的Gps通道...", pu.puName, channelNo));
                return(0);
            }
            else
            {
                LogHelper.LogHelper.RecordLog(3, string.Format("打开{0}, {1}的Gps通道失败, 错误码:{2}", pu.puName, channelNo, ret));
            }
            return(-1);
        }
示例#2
0
        //查询设备列表,如果已存在该设备和通道,则修改通道在线状态,或添加通道,否则在设备列表中添加该设备和通道
        public void OnGetPu(string puName, string puId, Channel channel)
        {
            foreach (Pu pu in m_server.puList)
            {
                if (pu.id.Equals(puId))
                {
                    foreach (Channel chnl in pu.channelList)
                    {
                        if (chnl.channelNo == channel.channelNo)
                        {
                            chnl.online = channel.online;
                            return;
                        }
                    }
                    pu.channelList.Add(channel);
                    return;
                }
            }
            Pu newPu = new Pu();

            newPu.id     = puId;
            newPu.puName = puName;
            newPu.channelList.Add(channel);
            m_server.puList.Add(newPu);
        }
示例#3
0
        void OnGetPuPtzAttr(IntPtr session, IntPtr puIdPtr, int ptzIndex, IntPtr ptzAttrPtr)
        {
            string             puId    = Marshal.PtrToStringAnsi(puIdPtr);
            BVCU_PUCFG_PTZAttr ptzAttr = (BVCU_PUCFG_PTZAttr)Marshal.PtrToStructure(ptzAttrPtr, typeof(BVCU_PUCFG_PTZAttr));
            Pu pu = m_session.getPu(puId);

            if (pu != null)
            {
                pu.puPtz.Add(ptzAttr);
            }
        }
示例#4
0
        /// <summary>
        /// 点击设备列表中的节点时发生
        /// </summary>
        private void treeViewResList_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //点击通道时发生,视频通道
            if (e.Node.Level == TREE_LEVEL_CHANNEL)
            {
                Pu  pu        = m_sdkOperator.Session.getPu(e.Node.Parent.Name);
                int channelNo = pu.getChannelNo(e.Node.Text);
                if (channelNo >= BVCU.BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL && channelNo < BVCU.BVCU_SUBDEV_INDEXMAJOR_MAX_CHANNEL)
                {
                    if (m_sdkOperator.Dialog.Count == VIDEO_PANEL_COUNT)
                    {
                        MessageBox.Show("窗口已全部占用");
                        return;
                    }
                    foreach (Panel panel in m_videoPanels)
                    {
                        if (panel.ContextMenuStrip == null)
                        {
                            panel.ContextMenuStrip = contextMenuStripVideo;
                            Console.WriteLine("Open dialog pu " + pu.id + " channel " + channelNo);

                            //打开浏览*******************************************************************
                            m_sdkOperator.Dialog.openBrowse(pu, channelNo, panel);

                            /*
                             * Player p = new Player();
                             * p.Show();
                             *
                             * m_sdkOperator.Dialog.PreviewVideo(pu, channelNo, p.tbPlay);
                             */
                            break;
                        }
                    }
                }
                else if (channelNo >= BVCU.BVCU_SUBDEV_INDEXMAJOR_MIN_TSP && channelNo < BVCU.BVCU_SUBDEV_INDEXMAJOR_MAX_TSP)
                {
                    //打开Tsp通道
                    if (m_sdkOperator.Dialog.openTspDialog(pu, channelNo) == 0)
                    {
                        ListViewItem item = new ListViewItem();
                        item.Text = pu.id;
                        item.Tag  = channelNo;
                        ListViewItem.ListViewSubItem TspData = new ListViewItem.ListViewSubItem();
                        ListViewItem.ListViewSubItem len     = new ListViewItem.ListViewSubItem();
                        item.SubItems.AddRange(new ListViewItem.ListViewSubItem[] { TspData, len });

                        listViewGPSData.Items.Add(item);
                    }
                }
            }//点击通道时发生 end
        }
示例#5
0
        /// <summary>
        /// 打开对话(Dialog)
        /// </summary>
        /// <param name="pu"></param>
        /// <param name="channelNo"></param>
        /// <param name="panel"></param>
        public void openBrowse(Pu pu, int channelNo, Panel panel)
        {
            try
            {
                BVCU_DialogControlParam_Network net = new BVCU_DialogControlParam_Network(0, 5, 1, 3);
                BVRect    dispRect = new BVRect(0, 0, panel.ClientRectangle.Height, panel.ClientRectangle.Width);
                OneDialog dlg      = new OneDialog();

                foreach (Channel channel in pu.channelList)
                {
                    int volume = -1;
                    if (channel.channelNo == channelNo)
                    {
                        if (channel.audioPlayback)
                        {
                            volume = 0;
                        }
                        //打开视屏浏览, 主要参数:sdkHandle、sessionHandle、puID、channelNo、显示区域的大小
                        int ret = BVCU.ManagedLayer_CuBrowsePu(m_bvsdkHandle,                 //sdk handle
                                                               ref dlg.dialogHandle,          //dialog handle
                                                               m_session.Handle,              //session handle
                                                               Encoding.UTF8.GetBytes(pu.id), //pu id
                                                               channelNo,                     //channel no
                                                               panel.Handle,                  //pannel handle
                                                               ref dispRect,                  //上下左右,矩形
                                                               volume,                        //音量
                                                               0,                             //single Rec File Sec
                                                               Encoding.UTF8.GetBytes(""),    //rec File Dir
                                                               true,                          //videoTrans
                                                               ref net,                       //network 时延
                                                               m_bvsdkEventHandler.dialog_OnDialogEvent,
                                                               m_bvsdkEventHandler.dialog_OnStorageEvent);

                        BVCU.FAILED(ret);
                        LogHelper.LogHelper.RecordLog(4, string.Format("打开[{0}, {1}]的视屏预览通道", pu.puName, channelNo));

                        break;
                    }
                }

                dlg.panel     = panel;
                dlg.pu        = pu;
                dlg.channelNo = channelNo;
                m_dialogs.Add(dlg);
            }
            catch
            {
                panel.ContextMenuStrip = null;
                MessageBox.Show("打开预览失败");
            }
        }
示例#6
0
        public Channel getChannel(string puId, int channelNo)
        {
            Pu pu = getPu(puId);

            if (pu != null)
            {
                foreach (Channel channel in pu.channelList)
                {
                    if (channel.channelNo == channelNo)
                    {
                        return(channel);
                    }
                }
            }
            return(null);
        }
示例#7
0
 private void treeViewResList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
 {
     if (e.Button == System.Windows.Forms.MouseButtons.Right)
     {
         if (e.Node.Level == TREE_LEVEL_CHANNEL)
         {
             Pu  pu         = m_sdkOperator.Session.getPu(e.Node.Parent.Name);
             int ichannelNo = pu.getChannelNo(e.Node.Text);
             g_pu        = pu;
             g_channelNo = ichannelNo;
             if (ichannelNo >= BVCU.BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL && ichannelNo < BVCU.BVCU_SUBDEV_INDEXMAJOR_MAX_CHANNEL)
             {
                 contextMenuStripTalkOnly.Show(Control.MousePosition.X,
                                               Control.MousePosition.Y);
             }
         }
     }
 }
示例#8
0
        public void openTalkOnly(Pu pu, int channelNo, Panel panel)
        {
            try
            {
                BVCU_DialogControlParam_Network net = new BVCU_DialogControlParam_Network(0, 5, 1, 3);
                BVRect    dispRect = new BVRect(0, 0, panel.ClientRectangle.Height, panel.ClientRectangle.Width);
                OneDialog dlg      = new OneDialog();

                foreach (Channel channel in pu.channelList)
                {
                    int captureVolume = 50;
                    int audioVolume   = 50;
                    if (channel.channelNo == channelNo)
                    {
                        int ret = BVCU.ManagedLayer_CuNewTalk(m_bvsdkHandle,
                                                              ref dlg.dialogHandle,
                                                              m_session.Handle,
                                                              Encoding.UTF8.GetBytes(pu.id),
                                                              channelNo,
                                                              captureVolume,
                                                              audioVolume,
                                                              ref net,
                                                              m_bvsdkEventHandler.dialog_OnDialogEvent,
                                                              m_bvsdkEventHandler.dialog_OnStorageEvent);
                        BVCU.FAILED(ret);
                        LogHelper.LogHelper.RecordLog(4, string.Format("打开[{0}]对讲", pu.puName));
                        break;
                    }
                }
                dlg.panel     = panel;
                dlg.pu        = pu;
                dlg.channelNo = channelNo;
                m_dialogs.Add(dlg);
            }
            catch
            {
                panel.ContextMenuStrip = null;
                MessageBox.Show("打开对讲失败");
            }
        }
示例#9
0
        /// <summary>
        /// 视频预览
        /// </summary>
        /// <example>adf</example>
        /// <param name="pu">要预览的设备</param>
        /// <param name="channelNo">通道号</param>
        /// <param name="control">在哪个控件上预览</param>
        public void PreviewVideo(Pu pu, int channelNo, Control control)
        {
            BVCU_DialogControlParam_Network net = new BVCU_DialogControlParam_Network(0, 5, 1, 3);
            OneDialog dlg      = new OneDialog();
            BVRect    dispRect = new BVRect(0, 0, control.ClientRectangle.Height, control.ClientRectangle.Width);

            //打开视屏浏览
            int ret = BVCU.ManagedLayer_CuBrowsePu(m_bvsdkHandle,                 //sdk handle
                                                   ref dlg.dialogHandle,          //dialog handle
                                                   m_session.Handle,              //session handle
                                                   Encoding.UTF8.GetBytes(pu.id), //pu id
                                                   channelNo,                     //channel no
                                                   control.Handle,                //pannel handle
                                                   ref dispRect,                  //上下左右,矩形
                                                   0,                             //音量
                                                   0,                             //single Rec File Sec
                                                   Encoding.UTF8.GetBytes(""),    //rec File Dir
                                                   true,                          //videoTrans
                                                   ref net,                       //network 时延
                                                   m_bvsdkEventHandler.dialog_OnDialogEvent,
                                                   m_bvsdkEventHandler.dialog_OnStorageEvent);
        }
示例#10
0
        public int openTspDialog(Pu pu, int channelNo)
        {
            //查询tsp通道列表,如果已存在该通道,则返回
            foreach (OneDialog dlg in m_tspDialogs)
            {
                if (dlg.pu.id.Equals(pu.id, StringComparison.CurrentCultureIgnoreCase) &&
                    dlg.channelNo == channelNo)
                {
                    LogHelper.LogHelper.RecordLog(51, string.Format("已经发送打开[{0}, {1}]串口通道的命令", pu.puName, channelNo));
                    return(-1);
                }
            }
            IntPtr dialog = IntPtr.Zero;
            //打开TSP通道
            int ret = BVCU.ManagedLayer_CuOpenTspDialog(m_bvsdkHandle, ref dialog, m_session.Handle, Encoding.UTF8.GetBytes(pu.id), channelNo, m_bvsdkEventHandler.tspDialog_OnEvent, m_bvsdkEventHandler.tspDialog_OnData);

            //如果打开TSP通道成功,则在TSP通道列表中加入该通道
            if (BVCU.BVCU_RESULT_S_OK == ret)
            {
                OneDialog dlg = new OneDialog();
                dlg.dialogHandle = dialog;
                dlg.channelNo    = channelNo;
                dlg.pu           = pu;
                m_tspDialogs.Add(dlg);

                LogHelper.LogHelper.RecordLog(0, string.Format("正在打开设备:{0}, 通道:{1}的串口", pu.puName, channelNo));
                return(0);
            }
            else
            {
                string errorMsg = string.Format("打开{0}的{1}串口失败(错误码:{2})", pu.puName, channelNo, ret);
                MessageBox.Show(errorMsg);
                LogHelper.LogHelper.RecordLog(100, errorMsg);
            }
            return(-1);
        }
示例#11
0
        /// <summary>
        /// 获得设备列表,更新Form中设备TreeView的内容,被this.getPuList()调用
        /// </summary>
        void procGetPuList()
        {
            //添加session节点
            treeViewResList.Nodes.Clear();
            TreeNode session = new TreeNode(m_sdkOperator.Session.Name);

            treeViewResList.Nodes.Add(session);

            for (int i = 0; i < m_sdkOperator.Session.PuList.Count; i++)
            {
                //添加设备节点
                Pu pu = (Pu)m_sdkOperator.Session.PuList[i];

                //当前设备是否连接通道
                foreach (OneDialog dlg in m_sdkOperator.Dialog.m_dialogs)
                {
                    if (dlg.pu == pu)
                    {
                        is_on_dialog = true;
                        break;
                    }
                }

                //m_sdkOperator.Dialog.m_dialogs;


                TreeNode puNode = new TreeNode();
                puNode.Name = pu.id;
                if (pu.puName.Length == 0)
                {
                    puNode.Text = pu.id;
                }
                else
                {
                    puNode.Text = pu.puName;
                }

                session.Nodes.Add(puNode);
                bool online = false;
                //添加通道节点
                foreach (Channel channl in pu.channelList)
                {
                    TreeNode channelNode = new TreeNode(channl.channelName);
                    if (channl.online)
                    {
                        //。。。。。。。。。。后添加。。。。。。。。
                        if (!is_on_dialog)
                        {
                            #region

                            //获取通道号
                            int channelNo = pu.getChannelNo(channelNode.Text);


                            //如果通道在线,判断是否为TSP通道,如果为TSP通道,则打开TSP通道
                            if (channelNo >= BVCU.BVCU_SUBDEV_INDEXMAJOR_MIN_TSP && channelNo < BVCU.BVCU_SUBDEV_INDEXMAJOR_MAX_TSP)
                            {
                                //打开Tsp通道
                                if (m_sdkOperator.Dialog.openTspDialog(pu, channelNo) == 0)
                                {
                                    //向listview中添加设备和其对应的数据长度列
                                    ListViewItem item = new ListViewItem();
                                    item.Text = pu.id;
                                    item.Tag  = channelNo;
                                    ListViewItem.ListViewSubItem TspData = new ListViewItem.ListViewSubItem();
                                    ListViewItem.ListViewSubItem len     = new ListViewItem.ListViewSubItem();
                                    item.SubItems.AddRange(new ListViewItem.ListViewSubItem[] { TspData, len });

                                    listViewGPSData.Items.Add(item);
                                }
                            }
                            else if (channelNo >= BVCU.BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL && channelNo < BVCU.BVCU_SUBDEV_INDEXMAJOR_MAX_CHANNEL)
                            {
                                if (m_sdkOperator.Dialog.Count == 4)
                                {
                                    //MessageBox.Show("窗口已全部占用");
                                    //return;
                                }
                                else
                                {
                                    foreach (Panel panel in m_videoPanels)
                                    {
                                        if (panel.ContextMenuStrip == null)
                                        {
                                            panel.ContextMenuStrip = contextMenuStripVideo;
                                            Console.WriteLine("Open dialog pu " + pu.id + " channel " + channelNo);

                                            //打开浏览*******************************************************************
                                            m_sdkOperator.Dialog.openBrowse(pu, channelNo, panel);
                                            //录像
                                            // RecordPath = "E:\\PIPE_DATA\\TEST";
                                            Thread.Sleep(10000);
                                            m_sdkOperator.Dialog.record(panel);

                                            /*
                                             * Player p = new Player();
                                             * p.Show();
                                             *
                                             * m_sdkOperator.Dialog.PreviewVideo(pu, channelNo, p.tbPlay);
                                             */
                                            break;
                                        }
                                    }

                                    Thread.Sleep(10000);
                                }
                            }

                            #endregion
                        }

                        channelNode.ForeColor = Color.Blue;
                        online = true;
                    }
                    else
                    {
                        channelNode.ForeColor = Color.Gray;
                    }
                    puNode.Nodes.Add(channelNode);
                }

                /*for (int t = 0; t < pu.channelList.Count; t++)
                 * {
                 *  Channel channl = pu.channelList[i] as Channel;
                 *  TreeNode channelNode = new TreeNode(channl.channelName);
                 *  if (channl.online)
                 *  {
                 *      channelNode.ForeColor = Color.Blue;
                 *      online = true;
                 *  }
                 *  else
                 *  {
                 *      channelNode.ForeColor = Color.Gray;
                 *  }
                 *  puNode.Nodes.Add(channelNode);
                 * }*/

                if (online)
                {
                    puNode.ForeColor = Color.Blue;
                }
                else
                {
                    puNode.ForeColor = Color.Gray;
                }

                is_on_dialog = false;
            }

            //打开TSP通道后,向所有打开通道发送数据请求信息
            sndData_timer.Enabled = true;
        }