Cgw.MonitorManageAdapter.CgwMonitorManageAdapter.StartReceiveVideoByPipe C# (CSharp) Method

StartReceiveVideoByPipe() public method

预览摄像头视频,使用命名管道方式接收数据
public StartReceiveVideoByPipe ( string cameraNo, string &pipeName ) : SmcErr
cameraNo string
pipeName string
return Cgw.SmcError.SmcErr
        public Cgw.SmcError.SmcErr StartReceiveVideoByPipe(string cameraNo, out string pipeName)
        {
            NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
            logEx.Trace("Enter: CgwMonitorManageAdapter.StartReceiveVideoByPipe");
            pipeName = "";
            Cgw.SmcError.SmcErr err = new Cgw.SmcError.SmcErr();

            try
            {
                //if (serviceControl.MonitorServiceRun() && client.State == CommunicationState.Opened)
                if (serviceControl.MonitorServiceRun())
                {
                    client = new MonitorManageServiceClient();
                    CgwMonitorManageServiceReference.SmcErr serviceErr = client.StartReceiveVideoByPipe(out pipeName, cameraNo);
                    client.Close();

                    if (serviceErr.ErrNo != Cgw.SmcError.CgwError.ERR_MONITOR_MANAGE_SERVICE_SUCCESS)
                    {
                        logEx.Error("CgwMonitorManageAdapter.StartReceiveVideoByPipe failed. ErrNo = {0} ", serviceErr.ErrNo);
                        err = SetCgwErrNo(serviceErr);
                    }
                    else
                    {
                        //将摄像头通道删除。避免重启服务后,VideoPipe未清除,导致调用停止播放。by zWX231378 2015/7/16
                        VideoPipe delVideoPipe = VideoPipeManage.Instance().DeleteVideoPipe(cameraNo);
                        if (delVideoPipe != null)
                        {
                            logEx.Info("CgwMonitorManageAdapter.StartReceiveVideoByPipe delete VideoPipe. cameraNo = {0}", cameraNo);
                            delVideoPipe.Stop();
                        }

                        VideoPipe videoPipe = VideoPipeManage.Instance().AddVideoPipe(cameraNo, pipeName);
                        if (videoPipe != null)
                        {
                            try
                            {
                                videoPipe.Run();
                                if (videoPipe.HaveConnect)
                                {
                                    videoPipe.ReadData(this.dataCallBack);

                                    logEx.Info("CgwMonitorManageAdapter.StartReceiveVideoByPipe Success. pipeName = {0} ", pipeName);
                                }
                                else
                                {
                                    logEx.Error("CgwMonitorManageAdapter.StartReceiveVideoByPipe failed. cameraNo = {0} ", cameraNo);
                                }
                            }
                            catch (System.Exception ex)
                            {
                                logEx.Error("CgwMonitorManageAdapter.StartReceiveVideoByPipe Exception= {0} ", ex.ToString());
                            }
                        }
                        else
                        {
                            logEx.Error("CgwMonitorManageAdapter.StartReceiveVideoByPipe failed. cameraNo = {0} ", cameraNo);
                        }
                    }
                }
                else
                {
                    //当监控服务未启动,则关闭管道。
                    //StopReceiveVideoByPipe(cameraNo);
                    err.SetErrorNo(Cgw.SmcError.CgwError.ERR_MONITOR_MANAGE_SERVICE_RESTARTING);
                }
            }
            catch (System.Exception ex)
            {
                err.SetErrorNo(Cgw.SmcError.CgwError.ERR_MONITOR_MANAGE_SERVICE_RESTARTING);
                logEx.Error("CgwMonitorManageServiceReference.StartReceiveVideoByPipe failed. Exception is {0} ", ex.ToString());
            }
            return err;
        }