Ejemplo n.º 1
0
        protected virtual void Initialize()
        {
            Matrix  = new Matrix(_deviceDatas.Find(d => d.TypeName.ToLower().Contains("matrix")));
            Vertexs = new List <Vertex>();
            var vertexDatas = _deviceDatas.FindAll(d => d.TypeName.ToLower().Contains("vertex"));

            foreach (var vertexData in vertexDatas)
            {
                Vertexs.Add(new Vertex(vertexData));
            }
            CalBoxToMatrix = new CalBoxToMatrix(_deviceDatas.Find(d => d.TypeName.ToLower().Contains("calboxtomatrix")));
            CalBoxToVertex = new CalBoxToVertex(_deviceDatas.Find(d => d.TypeName.ToLower().Contains("calboxtovertex")));
            CalBoxWhole    = new CalBoxWhole(_deviceDatas.Find(d => d.TypeName.ToLower().Contains("calboxwhole")));
            VNA            = VNAFactory.GetVNA(_deviceDatas.Find(d => d.TypeName.ToLower().Contains("vna")));
            SwitchAdapter  = new SwitchAdapter <ISwitch>(CalBoxToMatrix, CalBoxToVertex, CalBoxWhole);
        }
Ejemplo n.º 2
0
 public override void DisConnectAll()
 {
     try
     {
         Matrix.Close();
         Vertexs.ForEach(v => v.Close());
         CalBoxToMatrix.Close();
         CalBoxToVertex.Close();
         CalBoxWhole.Close();
         VNA.Close();
     }
     catch (Exception ex)
     {
         Log.log.ErrorFormat("{0}", ex);
         throw ex;
     }
 }
Ejemplo n.º 3
0
        //校准方法,使用Vertex相位自校准
        private List <SignalPath> GetAllSignalPathData(CalBoxToMatrix calBoxToMatrix, CalBoxToVertex calBoxToVertex, IVectorNetworkAnalyzer VNA, Matrix matrix, Vertex[] vertex)
        {
            var signalPaths = new List <SignalPath>();

            //FrmOutput.GetFrmOutput().OutputLog = "Start The Calibration.";
            //SingletonFactory<FrmOutput>.CreateInstance().OutputLog = "Start The Calibration.";

            VNA.SetMarkerActive();
            VNA.SetMarkerX(matrix.Frequency * 1000000);
            //关闭Vertex所有通道,后面用哪个打开哪个
            foreach (var v in vertex)
            {
                v.CloseAllChannel(v.APortNum, v.BPortNum);
            }
            //for (int c = 1; c <= vertex.BPortNum; c++)
            //{
            for (int b = 1; b <= matrix.BPortConnectNum; b++)
            {
                //下行
                //var groupSignalPaths = new List<SignalPath>();
                var vertexID  = (b - 1) / AppConfigInfo.VertexAConnectNum;
                var inPortID  = (b - 1) % AppConfigInfo.VertexAConnectNum + 1;
                var outPortID = 1;

                vertex[vertexID].OpenChannel(inPortID, outPortID, UpDown.DOWN);

                if (Log.log.IsInfoEnabled)
                {
                    Log.log.InfoFormat("第{0}台Vertex响应。打开通道{1}{2},方向{3}。", vertexID, inPortID, outPortID, UpDown.DOWN);
                }

                for (int a = 1; a <= matrix.APortConnectNum; a++)
                {
                    var calBoxAPortID = a;
                    var calBoxBPortID = ((b - 1) / AppConfigInfo.VertexAConnectNum) * AppConfigInfo.VertexBConnectNum + 1;

                    calBoxToMatrix.Set64B16Switch(calBoxAPortID, calBoxBPortID, 1, 1);

                    if (Log.log.IsInfoEnabled)
                    {
                        Log.log.InfoFormat("衰减校准阶段切开关 {0}{1} OK。", calBoxAPortID, calBoxBPortID);
                    }
                    //calBoxToMatrix.SetSwitch(a);
                    //calBoxToVertex.SetSwitch(c);

                    //vNA.SetMarkerActive();
                    //vNA.SetMarkerX(ViewConfigInfo.Frequency * 1000000);
                    var signalPath = new SignalPath(matrix, calBoxToMatrix.CalBoxData)
                    {
                        APortID     = a,
                        BPortID     = b,
                        CPortID     = 1,
                        Attenuation = VNA.GetMarkerY(AppConfigInfo.AttMarkPoint),
                        //Phase = vNA.GetMarkerY(int.Parse(ConfigurationManager.AppSettings["Pha Mark Point"]))
                    };
                    //signalPath.GetOffsetAttToMatrix();
                    //signalPath.GetOffsetAttToVertex(UpDown.UP);
                    //signalPath.GetOffsetPhaToMatrix();
                    //不需要求Vertex补偿相位
                    //signalPath.GetOffsetPhaToVertex(UpDown.UP);
                    signalPaths.Add(signalPath);
                    //bgw.ReportProgress((1000 / 8192) * a * b * c);
                }
                vertex[vertexID].CloseChannel(inPortID, outPortID, UpDown.DOWN);

                if (Log.log.IsInfoEnabled)
                {
                    Log.log.InfoFormat("第{0}台Vertex响应。关闭通道{1}{2},方向{3}。", vertexID, inPortID, outPortID, UpDown.DOWN);
                }
                //下行
                //vertex.OpenChannel(b, c, UpDown.DOWN);
                //foreach (var signalPath in groupSignalPaths)
                //{
                //    vNA.SetMarkerActive();
                //    vNA.SetMarkerX((long.Parse(CalConfigInfo.Frequency) * 1000000));
                //    //signalPath.Attenuation = Math.Abs(vNA.GetMarkerY(int.Parse(ConfigurationManager.AppSettings["Att Mark Point"])));
                //    signalPath.Phase = r.Next(-360, 360);//vNA.GetMarkerY(int.Parse(ConfigurationManager.AppSettings["Pha Mark Point"]));
                //    signalPath.GetOffsetPhaToVertex(UpDown.DOWN);
                //}
                //vertex.CloseChannel(b, c, UpDown.DOWN);
                //signalPaths.AddRange(groupSignalPaths);
            }
            //}
            //};
            //FrmProgressBar frmProgressBar = new FrmProgressBar("Connecting... ", ref bgw);
            //frmProgressBar.ShowDialog();
            return(signalPaths);
        }