Beispiel #1
0
        public void DealPacket_ChainInfo(object pack)
        {
            RD_ChainInfo rd = (RD_ChainInfo)pack;

            if (rd.StartOrEnd == "s")
            {
                chain_path temp = new chain_path(this);
                temp.sensor_name = rd.id;
                temp.path        = rd.PathNodes;
                foreach (var o in rd.PathNodes)
                {
                    temp.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == o));
                }
                Scenemana.setupchain(temp);
                Scenemana.all_path.Add(temp);
            }
            else if (rd.StartOrEnd == "e")
            {
                //清楚掉链路
                chain_path temp;
                temp = Scenemana.all_path.Find(c => c.sensor_name == rd.id);
                if (temp != null)
                {
                    Scenemana.RemoveAllSensorOnPath(temp);
                    Scenemana.all_path.Remove(temp);
                }
                else
                {
                    MessageBox.Show("读取链路记录异常");
                }
            }
        }
Beispiel #2
0
        public void DealPacket_SatUser(object pack)
        {
            if (this.state.isSceneSetUp == false)
            {
                return;
            }
            RD_SatUser rd = (RD_SatUser)pack;

            Scenemana.newsat(rd.SatUserName, (rd.SatUserAltitude) + 6371.0, rd.SatUserOrbitalInclination, rd.SatUserRightAscensionOfAscendingNode);
            Scenemana.hlSatUser(rd.SatUserName);
        }
Beispiel #3
0
        public void DealPacket_SatUser(object pack)
        {
            if (this.state.isSceneSetUp == false)
            {
                return;
            }
            RD_SatUser rd = (RD_SatUser)pack;

            Scenemana.newsat(rd.SatUserName, (rd.SatUserAltitude) + 6371.0, rd.SatUserOrbitalInclination, rd.SatUserRightAscensionOfAscendingNode, @"D:\STK9\STKData\VO\Models\Space\a2100.mdl");
            Scenemana.newwalker_SatUser(rd.SatUserName, rd.SatUserOrbitalNumber, rd.SatUserInPlaneSatelliteNumber, rd.SatUserPhaseParameters, rd.SatUserRAANSpread);
            //Scenemana.hlSatUser(rd.SatUserName);
        }
Beispiel #4
0
        //处理信关站位置的包处理
        public void DealPacket_XGY(object pack)
        {
            RD_XGY rd = (RD_XGY)pack;

            if (rd.XGYHType == "xg")
            {
                Scenemana.newcity(rd.XGYHName, rd.XGYHLatitude, rd.XGYHLongitude);
            }
            else if (rd.XGYHType == "yh")
            {
                Scenemana.newuser(rd.XGYHName, rd.XGYHLatitude, rd.XGYHLongitude);
            }
        }
Beispiel #5
0
        public void DealPacket_vehinfo(object pack)
        {
            if (this.state.isSceneSetUp == false)
            {
                return;
            }
            RD_Mobility rd = (RD_Mobility)pack;

            Scenemana.newveh(rd.MobileNodeName);//新建一个交通工具
            Scenemana.vehtime(rd.MobileNodeName, rd.MobileStartTime);
            Scenemana.vehway(rd.MobileNodeName, rd.StartLatitude, rd.StartLongitude, rd.MobileSpeed);
            //这里待添加终止时间
            Scenemana.vehway(rd.MobileNodeName, rd.EndLatitude, rd.EndLongitude, rd.MobileSpeed);
        }
Beispiel #6
0
        public void DealPacket_ChainInfo(object pack)
        {
            RD_ChainInfo rd = (RD_ChainInfo)pack;
            //建立链路
            chain_path temp = new chain_path(this);

            temp.sensor_name = rd.id;
            temp.path        = rd.PathNodes;
            foreach (var o in rd.PathNodes)
            {
                temp.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == o));
            }
            //beamdiameter = 103;
            Scenemana.setupchain(temp, beamdiameter);
            Scenemana.all_path.Add(temp);
        }
Beispiel #7
0
        public void DealPacket_InterSatellitePath(object pack)
        {
            RD_InterSatellitePath rd = (RD_InterSatellitePath)pack;

            //判断是否为之前已存在的相同链路,如不同,则清除之前的链路
            if (rd_update.ISLPath != null && !rd.ISLPath.Equals(rd_update.ISLPath))
            {
                //清除链路
                chain_path temp;
                temp = Scenemana.all_path.Find(c => c.sensor_name == rd_update.ISLid.ToString());
                if (temp != null)
                {
                    Scenemana.RemoveAllSensorOnPath(temp);
                    Scenemana.all_path.Remove(temp);
                }
                //else MessageBox.Show("读取链路记录异常");
            }
            //判断是否需要建立新的链路(第一次建立或者链路改变)
            if (rd_update.ISLPath == null || !rd.ISLPath.Equals(rd_update.ISLPath))
            {
                chain_path   pathinfo = new chain_path(this);
                RD_ChainInfo temp1;
                int          index    = 0;
                string       Nodes    = rd.ISLPath.ToString();
                string[]     nodelist = Nodes.Split(new string[] { "->" }, StringSplitOptions.None);
                foreach (var str in nodelist)
                {
                    pathinfo.path.Add(str);
                    //将系统物件表中的物体添加到链路的小表中
                    pathinfo.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == str));
                }
                //pathinfo.sensor_name = pathinfo.path[0] + "-" + pathinfo.path[pathinfo.path.Count - 1];
                pathinfo.sensor_name = rd.ISLid.ToString();
                Scenemana.msglist.Clear();
                Scenemana.msglist.Add(new Msg {
                    PathNodes = pathinfo.path, id = pathinfo.sensor_name
                });
                temp1 = Scenemana.MakePacket(Scenemana.msglist[index]);
                if (temp1 != null)
                {
                    //立即执行
                    DealPacket_ChainInfo(temp1);
                    index++;
                }
            }
            rd_update = rd;//记录最新的链路信息,为下次判断做准备
        }
Beispiel #8
0
        public void DealPacket_Scenset(object pack)
        {
            RD_Scenset rd = (RD_Scenset)pack;

            this.Cursor = Cursors.WaitCursor;
            if (this.state.isSceneSetUp == true || this.root.CurrentScenario != null)
            {
                this.ResetCloseScene();
            }
            //建立场景
            this.Cursor       = Cursors.Default;
            this.scenenamenew = rd.ScenarioName;
            this.dStartTime   = DateTime.ParseExact(rd.StartTime, "yyyy-M-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
            this.startTime    = timeproc(rd.StartTime);
            this.endTime      = timeproc(rd.StopTime);
            this.stepTime     = rd.StepTime;
            this.新场景ToolStripMenuItem_Click(null, null);
            Scenemana.newsat("FX", rd.SatelliteAltitude + 6371.0, rd.OrbitalInclination, rd.RightAscensionOfAscendingNode);
            Scenemana.newwalker("FX", rd.OrbitalNumber, rd.InPlaneSatelliteNumber, rd.PhaseParameters, rd.raanspread);
            Scenemana.delsat("FX");
        }